触发器 当往一个表中插入数据时,更新另一个表,报语法错误...

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了触发器 当往一个表中插入数据时,更新另一个表,报语法错误...相关的知识,希望对你有一定的参考价值。

CREATE TABLE customercapital
(
bankaccount VARCHAR(15),
available NUMERIC(10,2) CHECK (available>=0)DEFAULT 0,
blocking NUMERIC(10,2) CHECK (blocking>=0)DEFAULT 0,
FOREIGN KEY (bankaccount) REFERENCES customer(bankaccount)
ON DELETE CASCADE
)

CREATE TABLE cashflow
(
serialnumber VARCHAR(15) PRIMARY KEY,
bankaccount VARCHAR(15),
capital NUMERIC(10,2) CHECK (capital>0),
FOREIGN KEY (bankaccount) REFERENCES customer(bankaccount)
ON DELETE CASCADE
)
【触发器】
CREATE TRIGGER Transacte
ON cashflow FOR INSERT AS
BEGIN
update customercapital
set available=available-b.capital,blocking=blocking+b.capital
FROM customercapital a,inserted b
  where a.bankaccount=b.bankaccount
END

参考技术A lz首先你建的外键语句有点问题,应该写成这样的CONSTRAINT fk_bank FOREIGN KEY (bankaccount) REFERENCES customer(bankaccount),下面的表也是,然后就是触发器的问题了,我觉得lz对触发器要实现的功能描述的不太清楚,你是要对一个表插入数据,然后再使用将这个数据插入到另一个表,还是要先更新一个表再利用触发器更新另一个表,还有就是你自己写的触发器的update的语法是update(表名)set(语句)where(条件),没有你写的from这个语句。 参考技术B CREATE TRIGGER Transacte
ON cashflow FOR INSERT AS
BEGIN
update customercapital
set available=customercapital.available-b.capital,blocking=customercapital.blocking+b.capital
FROM inserted b
  where customercapital.bankaccount=b.bankaccount
END

以上是关于触发器 当往一个表中插入数据时,更新另一个表,报语法错误...的主要内容,如果未能解决你的问题,请参考以下文章

插入后使用 SQL Server 触发器更新另一个表中的列

sql如何同时向两张表插入数据

触发器处理表更新

两张表 在一张表中插入数据时要使用触发器也更新另一张 有错误

插入更新另一个表后创建触发器

oracle触发器在表中插入新行时更新新的视图行