我正在尝试创建一个相当简单的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)
以上查询有效我只是不知道如何将其写为触发器语句。
请帮忙。
答案 0 :(得分: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]
,每个记录分别包含新旧记录。 AFTER INSERT和UPDATE触发器可以访问inserted
表,而AFTER UPDATE和DELETE触发器可以访问deleted
表。
这可能比您想知道的要多,但我认为您可以从我的代码中inserted
表的来源的简要说明中受益。
[在此处插入所有关于尽量不使用触发器的常见警告。]
答案 1 :(得分: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 Server
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)
希望这会对你有帮助......