如何在SQL Server中使用trigger更新外键引用表?

时间:2017-11-13 20:12:07

标签: sql sql-server database

说我有这些表:

CREATE TABLE person 
(
    person_id INT NOT NULL PRIMARY KEY,
    name VARCHAR NOT NULL,
    phone INT,
);

CREATE TABLE volunteers 
(
    person_id INT NOT NULL PRIMARY KEY,
    skill VARCHAR,
    FOREIGN KEY (person_id) REFERENCES person(person_id)
        ON DELETE CASCADE
        ON UPDATE CASCADE
);

当我在volunteers表中插入新记录时,是否可以在person上创建可插入volunteers表的触发器。

像这样:

INSERT INTO volunteers (person_id, name, skill) 
VALUES (12345, 'abc xyz', 'cooking');

如果没有使用触发器,还有其他选择吗?

1 个答案:

答案 0 :(得分:1)

我不会为您编写代码,但您可以执行以下操作:

  • 创建一个包含所需列的视图,并加入表格。
  • 编写instead of触发器以更新视图

documentation

中定义了对视图使用此类触发器

视图如下:

create view v_volunteers as 
    select v.person_id, p.name, v.skill
    from volunteers v join
         people p
         on p.person_id = v.person_id;