簡體   English   中英

插入表字段后更改其值

[英]Changing the value of a table field after it has already been inserted

我正在使用CMS系統,並使用一種smartform將字段插入表中。

在這些字段中,是產品名稱,數量和成本。

成本和產品名稱從產品表中獲取,而數量則手動輸入。

我知道這不是最好的體系結構,但是我所使用的系統受到限制。

我要做的是將插入后的成本值更改為數量*成本。

最簡單的方法是什么?

更改一行:

update  TheTable
set     cost = quantity * cost
where   pk = 123

如果您多次運行,成本將激增;-)

您可以在插入后使用新產品的標識字段運行UPDATE

UPDATE products
SET cost = cost * quantity
WHERE product_id = @productId

如果您的雙手綁得太緊,以至於無法更改表的結構,那么您可能將無法使用觸發器,但是無論如何都可以使用觸發器。

這是一個示例表結構:

DROP TABLE IF EXISTS `products`;

CREATE TABLE `products` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `product` VARCHAR(255),
    `quantity` INT(11) NOT NULL,
    `cost` DECIMAL(6,2) NOT NULL,
    PRIMARY KEY  (`id`)
) ENGINE=InnoDB;

創建一個觸發器,該觸發器在將成本插入products表之前對其進行更新:

DELIMITER //
DROP TRIGGER IF EXISTS update_cost//
CREATE TRIGGER update_cost BEFORE INSERT ON products
FOR EACH ROW BEGIN
    SET NEW.cost = NEW.cost * NEW.quantity;
END;
//
DELIMITER ;

將幾個產品插入表中:

INSERT INTO `products` (`product`, `quantity`, `cost`) VALUES
('Acme portable hole', 10, 20),
('Acme jet pack', 1000, 2);

費用會自動更新:

SELECT * FROM prodcuts;

+----+--------------------+----------+---------+
| id | product            | quantity | cost    |
+----+--------------------+----------+---------+
|  1 | Acme portable hole |       10 |  200.00 |
|  2 | Acme jet pack      |     1000 | 2000.00 |
+----+--------------------+----------+---------+

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM