如何在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 CONSTRAINT
和ON 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;