用于更新一个列值以等于记录的pkid的触发器

时间:2013-07-03 16:12:34

标签: sql-server triggers

我需要编写一个触发器,在创建记录后将第2列中的值设置为第1列中的值。

这是我到目前为止所做的:

create trigger update_docindex2_to_docid
ON dbo.TABLENAME
after insert
AS BEGIN
 set DOCINDEX2 = DOCID     
END;

我回答了自己的问题,我坐了一会儿,想了很久......

这似乎很简单。我担心我会破坏一些东西,因为我没有一个可以识别正确记录的where条件。我希望在数据库中创建记录后,将docindex2更新为新创建的DOCID。 docid是pkid。

任何想法/建议都表示赞赏....

1 个答案:

答案 0 :(得分:1)

你在找这样的东西吗?

CREATE TABLE Table1 (docid INT IDENTITY PRIMARY KEY, docindex2 INT);

CREATE TRIGGER tg_mytrigger
ON Table1 AFTER INSERT
AS
UPDATE t
   SET t.docindex2 = t.docid
  FROM Table1 t JOIN INSERTED i
    ON t.docid = i.docid;

INSERT INTO Table1 (docindex2) VALUES(0), (0);

插入后的表格内容

| DOCID | DOCINDEX2 |
---------------------
|     1 |         1 |
|     2 |         2 |

这是 SQLFiddle 演示