【问题标题】:SQL - How to create a trigger involving 2 separate tables?SQL - 如何创建涉及 2 个单独表的触发器?
【发布时间】:2017-03-28 05:35:37
【问题描述】:

在“publishers”表上创建一个名为 checkPub 的 INSERT 触发器,以向“pub_info”表中添加一行
1) 当一行插入到 'publishers' 表中时,pub_id 的值插入到 publishers 表中,
2) logo 列中为 NULL,并且
3) pr_info 列中的文本“新手”。
4) 此外,打印一条消息,说明 pub_id 以及 '9991 Inserted into 'pub_info' table'。

INSERT INTO publishers( pub_id, pub_name, city, country )
VALUES( '9905', 'New Publisher', 'Vancouver', 'Canada' );

CREATE TRIGGER checkPub
BEFORE INSERT OR UPDATE ON 
(Publishers P JOIN pub_info PI
  ON   
P.pub_id = PI.pub_id)

FOR EACH ROW

不知道后面的条件怎么写。

【问题讨论】:

  • 触发器不会首先在多个表上。触发器就像 OOP 中的事件。听起来您需要一个插入语句,该语句将在将行插入 Publishers 时将默认值和外键插入 pub_info。

标签: sql-server triggers


【解决方案1】:

这里不需要任何类型的循环。您只需要一个基本的插入语句。这是整个触发器的示例。

CREATE TRIGGER checkPub ON Publishers after INSERT AS
    set nocount on;

    insert pub_info
    (
        pub_id
        , logo
        , pr_info
    )
    select i.pub_id
        , null
        , 'Newbie'
    from inserted i;

由于这看起来像家庭作业,我会让你弄清楚最后一个要求。

【讨论】:

  • 非常感谢您的帮助。
猜你喜欢
  • 2017-09-08
  • 1970-01-01
  • 1970-01-01
  • 2014-02-02
  • 1970-01-01
  • 1970-01-01
  • 2018-11-02
  • 2015-12-20
  • 2013-07-14
相关资源
最近更新 更多