表产品
id name price quantity total
1 food 50 1 50
2 drink 20 2 40
3 dress 100 3 300
Run Code Online (Sandbox Code Playgroud)
如何声明具有两列产品的列的表?
我有这个代码:
CREATE TABLE [dbo].[Orders] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[ProductName] NCHAR (70) NULL,
[Price] INT NULL,
[Quantity] INT NULL,
[Total] INT NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);
Run Code Online (Sandbox Code Playgroud)
你可以试试这位朋友:
DROP TRIGGER IF EXISTS trg_product_total;
DELIMITER //
CREATE TRIGGER trg_product_total AFTER INSERT ON product
FOR EACH ROW BEGIN
SET @price = NULL, @quantity = NULL;
SELECT price INTO @price FROM product
WHERE id = NEW.id;
SELECT quantity INTO @quantity
WHERE id = NEW.id;
UPDATE product SET total = @price * @quantity
WHERE id = NEW.id;
END;
Run Code Online (Sandbox Code Playgroud)
如果您确实不想在将product.total插入数据库之前对其进行处理,则可以使用这种方法。
每次将新记录添加到表中时,触发器都会执行,其中总计列的预期插入是“NULL”或“0”,具体取决于您的默认值。
但我认为如果在插入之前计算一下会更好。
流程如下:
Application side
1. get price and quantity for the product
2. calculate for the total
3. insert values into the query
4. execute query
Run Code Online (Sandbox Code Playgroud)
如果您想了解有关 MySQL 触发器的更多信息:另外链接
,PHP 事务:链接
| 归档时间: |
|
| 查看次数: |
146 次 |
| 最近记录: |