我正在尝试调试create语句的问题,但是错误消息没有任何意义。
脚本是:
CREATE TABLE marlin.SupportLog
(
IssueID INTEGER UNIQUE NOT NULL,
TypeID INTEGER NOT NULL ,
IssueDescription VARCHAR(5000) NOT NULL ,
MinutesSpent INTEGER NOT NULL ,
PriorityID INTEGER NOT NULL ,
UserID INTEGER NOT NULL ,
SubmittedDate DATETIME NOT NULL DEFAULT SYSDATETIME() ,
LastModifiedDate DATETIME NULL DEFAULT SYSDATETIME() ,
LastModifiedUserID INTEGER NULL
CONSTRAINT SupportLog_pk
PRIMARY KEY NONCLUSTERED (IssueID)
CONSTRAINT TypeID_fk
FOREIGN KEY (TypeID)
REFERENCES marlin.SupportIssueType(TypeID)
CONSTRAINT SLPriorityID_fk
FOREIGN KEY (PriorityID)
REFERENCES marlin.SupportPriority(PriorityID)
CONSTRAINT UserID_fk
FOREIGN KEY (UserID)
REFERENCES marlin.SupportUsers(UserID)
);如果我注释掉最后两个约束,表可以正常工作,但是,如果我按照上面的方式运行它,我会收到:
Msg 8148, Level 16, State 0, Line 1
More than one column FOREIGN KEY constraint specified for column 'LastModifiedUserID', table 'marlin.SupportLog'.
Msg 8148, Level 16, State 0, Line 1
More than one column FOREIGN KEY constraint specified for column 'LastModifiedUserID', table 'marlin.SupportLog'.错误似乎没有帮助-我不理解什么/我做错了什么?
发布于 2012-02-06 08:19:55
CREATE TABLE语句在每个CONSTRAINT前缺少逗号。
发布于 2012-02-06 08:41:22
在创建表时,有两种执行约束的方法。在表级或列级。例如(使用Oracle,没有SQL Server,但它们具有相同的概念):
-- column level
create table t(c1 number constraint t_uk1 unique
, c2 number constraint t_uk2 unique);
-- table level
create table t(c1 number
, c2 number
, constraint t_uk1 unique(c1)
, constraint t_uk2 unique(c2));在您的例子中,没有逗号的情况是,您对表中的最后一列有多个列级约束。我同意这条信息没有帮助。SQL Server猜测的含义与您的预期不同。
注意:当涉及多个列时,必须使用表约束。
列级约束中涉及的列是隐式的。假设一旦SQL Server通过了对一个列的多个外键约束,它就会开始抱怨列的指定方式与它所抱怨的列的指定位置不同。
更多细节可以在MSDN上找到。
https://stackoverflow.com/questions/9154227
复制相似问题