记录在表SQL Server中删除的行

斯蒂芬

我之前曾做过一个话题,但我认为我并不清楚,我将尽我所能尽可能详细地解释它。

我有一个名为List的表,该表有32000行,每年(2000-1999)为2000(行),其中包括:SongID,Top2000Year,Position,

发生了什么:

如果某人删除了例如2000年,则2000年中的所有2000首歌曲都将被删除,那没有问题

Delete from List WHERE top2000Year = 2000

但是,我面临的问题是:我需要对此进行记录,我创建了一个名为LogTable的日志表,其列为:Title,Artist,Year,Position Title将是歌曲标题,year是歌曲发行年份, position是列表中的位置

这些来自不同的表,我像这样加入他们

select title, name[artist],song.Year[SongYear], position from List
left join Song on Song.songid = List.songid
left join Artist on Artist.artistid = Song.artistid
where top2000Year = 2013
order by position asc

这显示了一个类似http://puu.sh/i8f2u/8702ee7010.png的查询(检查了服务器,是我的老师,所以我认为我会对其进行检查)

我试图完全像这样填充我的LogTable,如果删除了2013年,则应使用触发器将那2000行插入到LogTable中

编辑:我使用了这个https://dbalink.wordpress.com/2008/06/20/how-to-sql-server-trigger-101/并且它起作用了,然后我在我的数据库中尝试了它,但是没有工作。

代码:

USE [TOP2000DATABASE]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[TRGDeleteList]
ON list 
FOR DELETE
AS
INSERT INTO List (songid,top2000Year,position)
SELECT songid,top2000Year,position FROM Inserted
INSERT INTO [dbo].[LogTabel] (title,artist,Year,position)
SELECT title,artist,year,position FROM Deleted
乔基·纳库里(Giorgi Nakeuri)

只需trigger在您的表上创建一个delete动作即可:

CREATE TRIGGER TriggerName
    ON List
    FOR DELETE
AS
    INSERT INTO LogTable (Title, Artist, Year, Position)
    SELECT s.Title, a.Name, s.Year, s.Position 
    FROM DELETED d
    LEFT JOIN Song s ON s.songid = d.songid
    LEFT JOIN Artist a ON a.artistid = s.artistid
GO

您需要加入DELETED虚拟表才能获取所有已删除的行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法删除SQL Server CE中的记录

来自分类Dev

检查这些记录是否在从属表中后,sql server从表中删除重复记录

来自分类Dev

MySQL-如何获取所有记录在同一表的其他列中

来自分类Dev

SQL Server:根据TVP表的值删除表中的记录

来自分类Dev

如果记录在另一个表中作为外部记录存在,如何不删除?

来自分类Dev

对记录在另一个表中的票数符合条件的记录进行计数

来自分类Dev

从SQL Server的多个表中删除许多记录的最佳实践

来自分类Dev

选择几天之内每天记录在表中的最后一个条目

来自分类Dev

如何从SQL表中删除多个记录

来自分类Dev

如何使用codeigniter活动记录在mysql表的单个字段中搜索多个值?

来自分类Dev

如何从SQL Server中的表中删除重复的记录?

来自分类Dev

使用Linq确定记录在列表中是否不存在但在表中是否存在

来自分类Dev

检查这些记录是否在从属表中后,sql server从表中删除重复记录

来自分类Dev

活动记录在CodeIgniter中获取第二个表值

来自分类Dev

插入之前删除SQL Server表中的记录

来自分类Dev

SQL Server 2008中的自动行删除

来自分类Dev

获取未记录在联接表中的行

来自分类Dev

SQL Server 2008 R2:从多个表中删除重复的行,并保留原始的行

来自分类Dev

从SQL Server 2012表中删除具有身份的重复记录

来自分类Dev

对记录在另一个表中的投票满足条件的记录进行计数

来自分类Dev

从SQL Server的多个表中删除许多记录的最佳实践

来自分类Dev

从表中检查历史记录并根据记录在MySQL中标记记录

来自分类Dev

删除时间戳列不同的SQL Server中单个表中的行

来自分类Dev

计算记录在我的表中存在的天数

来自分类Dev

使用数据库中的记录在数据表中设置单选按钮

来自分类Dev

如何删除 SQL Server 中的重复行

来自分类Dev

使用 CTE 从 JOIN 中的两个 SQL Server 表中删除记录

来自分类Dev

java oracle jdbc 结果集为空但记录在表中可用

来自分类Dev

如果记录在一张表中,如何显示名称而不是 id?

Related 相关文章

  1. 1

    无法删除SQL Server CE中的记录

  2. 2

    检查这些记录是否在从属表中后,sql server从表中删除重复记录

  3. 3

    MySQL-如何获取所有记录在同一表的其他列中

  4. 4

    SQL Server:根据TVP表的值删除表中的记录

  5. 5

    如果记录在另一个表中作为外部记录存在,如何不删除?

  6. 6

    对记录在另一个表中的票数符合条件的记录进行计数

  7. 7

    从SQL Server的多个表中删除许多记录的最佳实践

  8. 8

    选择几天之内每天记录在表中的最后一个条目

  9. 9

    如何从SQL表中删除多个记录

  10. 10

    如何使用codeigniter活动记录在mysql表的单个字段中搜索多个值?

  11. 11

    如何从SQL Server中的表中删除重复的记录?

  12. 12

    使用Linq确定记录在列表中是否不存在但在表中是否存在

  13. 13

    检查这些记录是否在从属表中后,sql server从表中删除重复记录

  14. 14

    活动记录在CodeIgniter中获取第二个表值

  15. 15

    插入之前删除SQL Server表中的记录

  16. 16

    SQL Server 2008中的自动行删除

  17. 17

    获取未记录在联接表中的行

  18. 18

    SQL Server 2008 R2:从多个表中删除重复的行,并保留原始的行

  19. 19

    从SQL Server 2012表中删除具有身份的重复记录

  20. 20

    对记录在另一个表中的投票满足条件的记录进行计数

  21. 21

    从SQL Server的多个表中删除许多记录的最佳实践

  22. 22

    从表中检查历史记录并根据记录在MySQL中标记记录

  23. 23

    删除时间戳列不同的SQL Server中单个表中的行

  24. 24

    计算记录在我的表中存在的天数

  25. 25

    使用数据库中的记录在数据表中设置单选按钮

  26. 26

    如何删除 SQL Server 中的重复行

  27. 27

    使用 CTE 从 JOIN 中的两个 SQL Server 表中删除记录

  28. 28

    java oracle jdbc 结果集为空但记录在表中可用

  29. 29

    如果记录在一张表中,如何显示名称而不是 id?

热门标签

归档