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

问题描述:

我用很多表建立了一个大型数据库。在那之后,我会添加“删除级联”。如何在我想要的特定列上添加“在casade上删除”?如何在SQL Server中添加列类型“级联删除”?

例如:

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) 

您需要添加一个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;