【问题标题】:SQL Server: If a row is inserted in one table, how do I write a trigger to insert that same row in a different table?SQL Server:如果在一个表中插入一行,我如何编写触发器以将同一行插入到不同的表中?
【发布时间】:2019-11-23 03:32:02
【问题描述】:

我不确定如何创建此触发器。当在发布者表中插入一行时,我需要在 pub_info 表中添加一行。完全相同的行。 SQL 服务器

CREATE TRIGGER checkCity
ON pub_info
AFTER INSERT
AS
IF -- a row is inserted into publishers table, 
   -- how do I add the same row into pub_info table?
INSERT VALUES(@pub_id, NULL, 'new publishers')
BEGIN
END;

【问题讨论】:

  • 人们需要标记您的 DBMS 名称才能帮助您。

标签: sql sql-server triggers insert row


【解决方案1】:

您必须在 publishers 表而不是 pub_info 上创建触发器。 插入的数据在触发器的INSERTED表中可用

CREATE TRIGGER checkCity
ON publishers
AFTER INSERT
AS
BEGIN
  INSERT INTO pub_info(pubid, pubname, pub_description)
      SELECT pubid, pubname, pub_description 
      FROM INSERTED;
END;

【讨论】:

  • 我认为检查 IF EXISTS() 真的不需要,因为触发器只会触发 IF 一个 INSERT 语句已被执行,在这种情况下,Inserted 表中至少有一行必须存在。即使没有 - 如果Inserted 不包含任何行,INSERT INTO ... SELECT 也不会做任何“错误”或错误输出
  • @marc_s 小心你的假设。即使插入了零行,触发器也会触发。在这种情况下不会有影响,但在其他情况下可能会有所不同。
猜你喜欢
  • 2011-06-12
  • 1970-01-01
  • 2020-08-22
  • 2016-05-10
  • 2011-01-15
  • 1970-01-01
  • 2016-08-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多