在SQL中创建表时出错

时间:2014-10-11 01:21:51

标签: sql sql-server

我试图在新数据库中创建一些表,但是当我尝试创建它们时会产生一些错误。我目前正在使用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'附近的语法不正确。

任何想法是什么问题?

1 个答案:

答案 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
    )