如何在SQL Server中添加列类型“删除级联”?

时间:2017-10-07 18:07:36

标签: sql sql-server sql-server-2008

我构建了一个包含许多表的大型数据库。之后,我原谅添加“删除级联”。如何在我想要的特定列上添加“在casade上删除”?

例如:

create table Users
(
   ID char(9) primary key check (ID like replicate('[0-9]',9)),
   firstName nvarchar(20) not null,
)

并且

create table Applications
(
   name nvarchar(20) primary key,
   establishDate date not null
) 

如何更改此表注册到,以便在删除应用或用户时删除具有此值的行?

create table RegisteredTo
(
   userID char(9) references Users(ID),
   ApplicationName nvarchar(20) references Applications(name),
   primary key(userID, ApplicationName)
)

我尝试过类似的东西 - 但是我遇到了错误。

alter table RegisteredTo
ALTER COLUMN applicationName references Applications(name) ON DELETE CASCADE 
nvarchar(20)

1 个答案:

答案 0 :(得分:0)

您需要添加FOREIGN CONSTRAINTON DELETE CASCADE

ALTER TABLE RegisteredTo 
ADD CONSTRAINT FK_RegisteredTo_Users FOREIGN KEY (userID) REFERENCES Users(ID)  ON DELETE CASCADE;

ALTER TABLE RegisteredTo 
ADD CONSTRAINT FK_RegisteredTo_Applications FOREIGN KEY (ApplicationName) REFERENCES Applications(name)  ON DELETE CASCADE;