插入触发器 SQL。插入新表后如何从另一个表中检索值

Posted

技术标签:

【中文标题】插入触发器 SQL。插入新表后如何从另一个表中检索值【英文标题】:INSERT TRIGGERS SQL. How to retrieve value from another table after insert in new table 【发布时间】:2018-07-25 23:10:33 【问题描述】:

我是 SQL 触发器的新手。我目前被以下问题困扰。

我有 3 个表格 -

    订单

    orderid int(11) AI PK 订购日期 日期 总计十进制(8,2)

    产品

    productid int(11) AI PK 产品名称 varchar(50) 单位 varchar(10) 价格十进制(8,2)

    订单详情

    orderid int(11) productid int(11) 价格小数(8,2)

我在 ordersproducts 表中都有记录。 orderdetails 表为空,没有记录。

我想在 orderdetails 上创建一个插入触发器,以自动从 products 表中检索价格并将其更新到 orderdetails 表中插入类似的查询;

(例如 INSERT INTO orderdetails(orderid,productid) values(1,1))到 orderdetails 表中。

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

我手头没有 mysql,但这应该可以工作:

CREATE TRIGGER ins_price BEFORE INSERT ON orderdetails
       FOR EACH ROW
       BEGIN
           SET new.price= (select price from products where productid = new.productid);
       END;//

【讨论】:

以上是关于插入触发器 SQL。插入新表后如何从另一个表中检索值的主要内容,如果未能解决你的问题,请参考以下文章

sql中往一个表中插入数据但是其中一列需要从另一张表查状态,求指导

PL/SQL 仅使用游标将 2 个表中的数据检索到新表中

如何在新表中插入受影响的行

如何在具有某些首字母的新表中插入所有行(pl/sql)

您能否在视图上编写触发器,该视图在更改其基表后利用插入和删除表中的数据?

如何比较两个表的列并将值插入到基于 SQL Server 中存储过程中的比较的新表中