在 SQL Server 中,外键用于确保数据在表之间的引用完整性
- SET NULL:当删除或更新父表中的记录时,子表中的外键列将被设置为 NULL。这是默认的级联操作。
CREATE TABLE ChildTable ( ChildID INT PRIMARY KEY, ParentID INT, FOREIGN KEY (ParentID) REFERENCES ParentTable(ParentID) ON DELETE SET NULL );
- SET DEFAULT:当删除或更新父表中的记录时,子表中的外键列将被设置为其默认值。
CREATE TABLE ChildTable ( ChildID INT PRIMARY KEY, ParentID INT, FOREIGN KEY (ParentID) REFERENCES ParentTable(ParentID) ON DELETE SET DEFAULT );
- CASCADE:当删除或更新父表中的记录时,子表中的相关记录也将被删除或更新。
CREATE TABLE ChildTable ( ChildID INT PRIMARY KEY, ParentID INT, FOREIGN KEY (ParentID) REFERENCES ParentTable(ParentID) ON DELETE CASCADE );
- NO ACTION:当删除或更新父表中的记录时,子表中的外键列不会发生变化。这可以防止意外删除或更新子表中的数据。
CREATE TABLE ChildTable ( ChildID INT PRIMARY KEY, ParentID INT, FOREIGN KEY (ParentID) REFERENCES ParentTable(ParentID) ON DELETE NO ACTION );
在选择级联操作时,请根据您的应用程序需求和数据完整性要求来决定最合适的操作。