我试图在新数据库中创建一些表,但是当我尝试创建它们时会产生一些错误。我目前正在使用Microsoft SQL Server Management Studio。
错误似乎在代码的末尾,我试图为外键添加约束。非常感谢任何帮助。谢谢。
这里是代码,它意味着生成3个表,其中1个表包含2个具有匹配列名的其他表的外键。
CREATE TABLE Customers
(
CustomerID INT NOT NULL PRIMARY KEY IDENTITY,
ContactName VarChar(50) NULL,
Company VarChar(45) NULL,
Phone VarChar(12) NULL,
)
CREATE TABLE Shippers
(
ShipperID INT NOT NULL PRIMARY KEY IDENTITY,
Company VarChar(45) NULL,
Phone VarChar(12) NULL,
)
CREATE TABLE Orders
(
OrderID INT NOT NULL PRIMARY KEY IDENTITY,
OrderDate DATETIME NULL,
ShippedDate DATETIME NULL,
ShipperID INT NULL,
Freight DECIMAL NULL,
CustomerID INT NULL,
CONSTRAINT fk_Orders_Shippers
FOREIGN KEY ShipperID
REFERENCES Shippers(ShipperID)
ON DELETE NO ACTION
ON UPDATE NO ACTION
CONSTRAINT fk_Orders_Customers
FOREIGN KEY CustomerID
REFERENCES Customers(CustomerID)
ON DELETE NO ACTION
ON UPDATE NO ACTION
)
这些是我得到的错误:
Msg 102,Level 15,State 1,Line 21
' ShipperID'附近的语法不正确。Msg 102,Level 15,State 1,Line 23
' ACTION'附近的语法不正确。Msg 102,Level 15,State 1,Line 28
' ACTION'附近的语法不正确。
任何想法是什么问题?
答案 0 :(得分:4)
由于缺少括号,错误消息会指向一些多余的逗号,缺少逗号和不正确的外键语法。
这是正确的版本:
CREATE TABLE Customers (
CustomerID INT NOT NULL PRIMARY KEY IDENTITY,
ContactName VarChar(50) NULL,
Company VarChar(45) NULL,
Phone VarChar(12) NULL -- SURPLUS COMMA REMOVED
)
CREATE TABLE Shippers (
ShipperID INT NOT NULL PRIMARY KEY IDENTITY,
Company VarChar(45) NULL,
Phone VarChar(12) NULL -- SURPLUS COMMA REMOVED
)
CREATE TABLE Orders (
OrderID INT NOT NULL PRIMARY KEY IDENTITY,
OrderDate DATETIME NULL,
ShippedDate DATETIME NULL,
ShipperID INT NULL,
Freight DECIMAL NULL,
CustomerID INT NULL,
CONSTRAINT fk_Orders_Shippers
FOREIGN KEY (ShipperID) -- PARENTHESES ADDED
REFERENCES Shippers(ShipperID)
ON DELETE NO ACTION
ON UPDATE NO ACTION
, -- COMMA ADDED
CONSTRAINT fk_Orders_Customers
FOREIGN KEY (CustomerID) -- PARENTHESES ADDED
REFERENCES Customers(CustomerID)
ON DELETE NO ACTION
ON UPDATE NO ACTION
)