Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 当使用触发器在另一个表上使用参数更新列时,更新一个表的列_Sql Server - Fatal编程技术网

Sql server 当使用触发器在另一个表上使用参数更新列时,更新一个表的列

Sql server 当使用触发器在另一个表上使用参数更新列时,更新一个表的列,sql-server,Sql Server,我有两个表通过CustomerId建立了关系: 发票: Invoice | RouteCode | CustomerId 1001 | 1 | 90 1002 | 2 | 70 1003 | 3 | 80 CustomerId | CustomerName | RouteCode 90 | AAA | 1 70 | BBB | 2 80 | C

我有两个表通过
CustomerId
建立了关系:

发票

Invoice | RouteCode | CustomerId
1001    | 1         | 90
1002    | 2         | 70
1003    | 3         | 80
CustomerId | CustomerName | RouteCode 
90         | AAA          | 1
70         | BBB          | 2
80         | CCC          | 3
客户

Invoice | RouteCode | CustomerId
1001    | 1         | 90
1002    | 2         | 70
1003    | 3         | 80
CustomerId | CustomerName | RouteCode 
90         | AAA          | 1
70         | BBB          | 2
80         | CCC          | 3
我想创建一个触发器,一旦发票中的RouteCode被更改,特定客户的客户中的RouteCode将被更改

例如:

发票:

Invoice | RouteCode | CustomerId
1001    | 2         | 90           (the RouteCode here has changed)
1002    | 2         | 70
1003    | 3         | 80
顾客:

CustomerId | CustomerName | RouteCode 
90         | AAA          | 2        (the RouteCode here must change too)
70         | BBB          | 2
80         | CCC          | 3
我有以下代码:

create trigger UpdateRouteCode
before update on Invoice
for each row
begin
    if :new.RouteCode != :old.RouteCode
    then
        update Customer c
        set c.RouteCode = :new.RouteCode
        where c.CustomerId = :new.CustomerId
end
我不知道这是否正确,因为在新的查询窗口中显示:

Msg 102,15级,状态1,程序更新代码,第2行
“before”附近的语法不正确

create trigger UpdateRouteCode
发票上
更新
作为
开始
更新c
设置路由代码=i.RouteCode
从插入i
在i.CustomerId=c.CustomerId上内部加入客户c
其中i.RouteCode c.RouteCode
结束
创建触发器更新代码
发票上
更新
作为
开始
更新c
设置路由代码=i.RouteCode
从插入i
在i.CustomerId=c.CustomerId上内部加入客户c
其中i.RouteCode c.RouteCode
结束

您的触发器语法不属于
SQL SERVER
我刚从这里的一个解决方案中得到它。您能告诉我如何更改它吗?如果一个
客户
发票
表中多次出现,并且只有一个客户
路由代码
发生了更改,在这种情况下我们应该做什么?您的触发器语法不属于
SQL SERVER
我只是从这里的一个解决方案中获得的。您能告诉我如何更改它吗?如果一个
客户
发票
表中多次出现,并且只有一个客户
路线代码
被更改,我们应该做什么呢!工作正常,谢谢!它完全按照它应该的那样工作。