插入新记录后如何创建更新触发器?

时间:2019-04-07 11:14:16

标签: mysql triggers database-trigger

我在mysql中创建了表。表名称为sales,其中包含以下列 saleID int NOT NULL Primary Key, productID int NOT NULL, unitPrice decimal(6,2) NOT NULL, quantity int NOT NULL, total decimal(6,2) 现在,我要在插入新记录后找到update trigger,以找到此次销售的总价。

我正在尝试编写更新触发器

DELIMITER $$
CREATE TRIGGER before_sales_insert  
before INSERT ON sales
FOR EACH ROW 
 BEGIN

END#
$$
DELIMITER 

我是初学者,请帮助。谢谢

1 个答案:

答案 0 :(得分:0)

给出

select productid ,standardcost from awproduct where productid = 707;
+-----------+--------------+
| productid | standardcost |
+-----------+--------------+
|       707 |         3.00 |
+-----------+--------------+

,并假设您在调用触发器之前尚未获得单价

drop table if exists t;
drop trigger if exists t;
create table t
(id int, productid int, unitprice int, quantity int, totalprice int);

delimiter $$
create trigger  t
before insert on  t
for each row begin
    set new.unitprice = (select standardcost from awproduct where productid = new.productid);
    set new.totalprice = new.quantity * new.unitprice;

end $$
delimiter ;

insert into t (id,productid,quantity) values
(1,707,10);

select * from t;

+------+-----------+-----------+----------+------------+
| id   | productid | unitprice | quantity | totalprice |
+------+-----------+-----------+----------+------------+
|    1 |       707 |         3 |       10 |         30 |
+------+-----------+-----------+----------+------------+
1 row in set (0.00 sec)

我无法对手册中的文档进行改进,因此我不会尝试。顺便说一句,如果您想要一个更接近您要求的解决方案,最好将示例数据作为文本包含在问题中。