SQL Server:多CASCADE操作

时间:2016-08-14 21:20:59

标签: sql-server-2012 cascade

我有两个表,我希望HEDE2列为HEDE表的FOREIGN KEY REFERENCES。为了创建第二个表,它将不允许,因为它有警告:

  

在列级FOREIGN KEY约束中指定了多个键,表'HEDE2'。

但是当我尝试ALTER TABLE HEDE2 FOREIGN KEY时,它允许我这样做。有谁知道为什么会这样。这是一个错误吗?

CREATE TABLE cascde.HEDE
(
    HedeID INT,
    HedeID2 INT,
    HedeID3 INT

    CONSTRAINT PK_HEDE 
        PRIMARY KEY (HedeID, HedeID2, HedeID3)
)
GO

CREATE TABLE HEDE2
(
    Hede2ID INT PRIMARY KEY IDENTITY(1,1) ,
    HedeID INT,
    HedeID2 INT,
    HedeID3 INT

    CONSTRAINT FK_HedeID 
        FOREIGN KEY (HedeID, Hede2ID, HedeID3)
        REFERENCES cascde.HEDE (HedeID, HedeID2, HedeID3)
           ON UPDATE NO ACTION
           ON DELETE NO ACTION
)

为外键更改表HEDE 2。这允许我这样做:

ALTER TABLE cascde.HEDE2 
  ADD CONSTRAINT FK_HEDE 
      FOREIGN KEY(HedeID, HedeID2, HedeID3)
      REFERENCES cascde.HEDE (HedeID, HedeID2, HedeID3) 
          ON UPDATE NO ACTION 
          ON DELETE NO ACTION 
GO

1 个答案:

答案 0 :(得分:0)

,版本中的HedeID3 INT后面缺少逗号(CREATE TABLE)。