-1

我正在尝试创建一个相当简单的 SQL Server 触发器,希望有人能提供帮助。

我有一个结构如下的表:

表格1:

CREATE TABLE `teg_priority` (
    `UCIDN` BIGINT(50) NULL DEFAULT NULL,
    `CIDN` BIGINT(50) NOT NULL,
    `CustomerName` VARCHAR(200) NOT NULL,
    `NGM` VARCHAR(150) NULL DEFAULT NULL,
    `Service_Manager` VARCHAR(150) NULL DEFAULT NULL,
    `CBS` LONGTEXT NULL,
    `Tag` VARCHAR(50) NOT NULL,
    PRIMARY KEY (`CIDN`)
)

和另一个表(表#2):

CREATE TABLE `custalign` (
    `UCIDN` BIGINT(20) NOT NULL,
    `CIDN` BIGINT(20) NOT NULL,
    `CustomerName` VARCHAR(255) NOT NULL,
    PRIMARY KEY (`CIDN`)
)

我正在尝试设置一个触发器,每次将新记录插入第一个表时,以下查询将作为触发器运行以更新表 1 中的字段 UCIDN

update teg_priority
set teg_priority.UCIDN = (select UCIDN from custalign 
where teg_priority.CIDN = custalign.CIDN)

上面的查询有效,我只是不知道如何将其编写为触发语句。

请帮忙。

4

2 回答 2

2
CREATE TRIGGER dbo.Teg_priority_after_insert 
ON dbo.teg_priority AFTER INSERT
AS

UPDATE inserted
set inserted.UCIDN = (select UCIDN from custalign 
where inserted.CIDN = custalign.CIDN)

这就是你的答案。您可能会考虑改变方法;假设它不需要对您的流程进行全面返工。如果不知道您最终要完成什么,我真的无法提出更多建议。

在 SQL Server 触发器中,有一个自动生成inserted的表,您可以参考。deleted每个分别包含新旧记录作为任何语句的结果AFTER [INSERT],[UPDATE],[DELETE]insertedAFTER INSERT 和 UPDATE 触发器可以访问该表,而AFTER deletedUPDATE 和 DELETE 触发器可以访问该表。

这可能比您想知道的要多,但我认为您会inserted从我的代码中表格来源的简要说明中受益。

[在这里插入所有关于尽量不使用触发器的常见警告。]

于 2013-11-11T00:32:35.417 回答
1

试试这个..希望这会帮助你

对于 MySQL

CREATE TRIGGER teg_priorityTrigger AFTER INSERT ON teg_priority
    FOR EACH ROW 
BEGIN
    UPDATE inserted
    set inserted.UCIDN = (select UCIDN from custalign 
    where inserted.CIDN = custalign.CIDN)
END

对于 SQL 服务器

CREATE TRIGGER teg_priorityTrigger ON dbo.teg_priority AFTER INSERT
    AS
      UPDATE inserted
      set inserted.UCIDN = (select UCIDN from custalign 
      where inserted.CIDN = custalign.CIDN)

希望这会帮助你...

于 2013-11-11T05:51:29.870 回答