T-SQL 中的连接表
在我的数据库应用程序中,当我尝试将页面附加到站点时,出现以下错误:
System.InvalidOperationException: Can't perform Create, Update or Delete operations on 'Table(Junc_Page_Site)' because it has no primary key.
我希望能够通过使用联结表将页面添加到多个站点。
下面是相关三个表的架构 (T-SQL)。任何建议将不胜感激!
CREATE TABLE Site (
Id INTEGER NOT NULL IDENTITY ,
FkSiteId INTEGER ,
Name NVARCHAR(64) NOT NULL ,
Domain NVARCHAR(128) ,
Theme NVARCHAR(32) ,
ThemeVariation NVARCHAR(32) ,
PRIMARY KEY(Id) ,
FOREIGN KEY(FkSiteId)
REFERENCES Site(Id));
GO
CREATE TABLE Page (
Id INTEGER NOT NULL IDENTITY ,
Title NVARCHAR(64) NOT NULL ,
Description NVARCHAR(256) NOT NULL ,
Keywords NVARCHAR(1024) NOT NULL ,
ScriptName NVARCHAR(64) ,
PRIMARY KEY(Id));
GO
CREATE TABLE Junc_Page_Site (
FkPageId INTEGER NOT NULL ,
FkSiteId INTEGER NOT NULL ,
FOREIGN KEY(FkSiteId)
REFERENCES Site(Id),
FOREIGN KEY(FkPageId)
REFERENCES Page(Id));
GO
In my database application, when I try to attach a page to a site, I get the following error:
System.InvalidOperationException: Can't perform Create, Update or Delete operations on 'Table(Junc_Page_Site)' because it has no primary key.
I intend a page to be able to be added to multiple sites - by using a junction table.
Below is the schema for the three tables in question (T-SQL). Any advice will be appreciated!
CREATE TABLE Site (
Id INTEGER NOT NULL IDENTITY ,
FkSiteId INTEGER ,
Name NVARCHAR(64) NOT NULL ,
Domain NVARCHAR(128) ,
Theme NVARCHAR(32) ,
ThemeVariation NVARCHAR(32) ,
PRIMARY KEY(Id) ,
FOREIGN KEY(FkSiteId)
REFERENCES Site(Id));
GO
CREATE TABLE Page (
Id INTEGER NOT NULL IDENTITY ,
Title NVARCHAR(64) NOT NULL ,
Description NVARCHAR(256) NOT NULL ,
Keywords NVARCHAR(1024) NOT NULL ,
ScriptName NVARCHAR(64) ,
PRIMARY KEY(Id));
GO
CREATE TABLE Junc_Page_Site (
FkPageId INTEGER NOT NULL ,
FkSiteId INTEGER NOT NULL ,
FOREIGN KEY(FkSiteId)
REFERENCES Site(Id),
FOREIGN KEY(FkPageId)
REFERENCES Page(Id));
GO
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你快到了。您只需要创建所谓的“复合主键”,也就是说您需要告诉数据库 FkPageId 和 FkSiteId 的组合将是唯一的:
You're almost there. You just need to create what's called a "composite primary key", which is to say that you need to tell the database that the conbination of FkPageId and FkSiteId will be unique: