2017-10-07 43 views
1

我用很多表建立了一個大型數據庫。在那之後,我會添加「刪除級聯」。如何在我想要的特定列上添加「在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) 

回答

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;