我需要创建一个删除触发器与档案表,所以当我从一个表中删除一条记录,它进入档案表及其相关的记录从其他表在SQL。
我有4个表,分别叫做Songs
、Genres
、Performers
和Directors
,加上关系,即连接Songs
和Performers
的SongPerformers
、连接Songs
和Genres
的SongGenres
以及连接Songs
和Directors
的SongDirectors
。
我也为Songs
表和存档表创建了删除触发器,问题是从Songs
表中删除时,删除的记录只在Songs
表中,而不删除其他表中的相关记录。
下面是数据库图表,显示了数据库的外观和我创建的触发器:
Database diagram
触发器:
CREATE TABLE Archives
(
Id INT PRIMARY KEY NOT NULL IDENTITY,
SongTitle VARCHAR (50) NOT NULL,
SongReleaseDate date NOT NULL,
SongTime float NOT NULL,
SongLanguage VARCHAR (50) NOT NULL,
Date DATETIME NOT NULL
)
CREATE TRIGGER Archivetrigger
ON Songs
AFTER DELETE
AS
INSERT INTO Archives (SongTitle, SongReleaseDate, SongTime, SongLanguage, [Date])
SELECT
d.SongTitle, d.SongReleaseDate, d.SongTime, d.SongLanguage, GETDATE()
FROM
deleted d
DELETE FROM Songs
WHERE SongID = 1
SELECT * FROM Archives
例如,我如何在触发器中添加其他表,以便在从歌曲中删除记录时,其所有相关记录也将被删除并添加到存档表中。
1条答案
按热度按时间9avjhtql1#
所以我找到了适合我的答案(虽然不完美,但确实有效),我在触发器中所要做的就是添加一些行,以帮助删除其他表中的相关记录:
下面是语法,它显然不是完美的,但它接近我需要的,并为我工作:
您可以添加所有需要从中删除的表。