我遇到触发器的问题我需要让我告诉你我有什么,然后问题是什么。
CREATE TABLE IF NOT EXISTS `book` (
`ISBN` bigint(13) NOT NULL,
`Title` varchar(128) NOT NULL,
`Version` smallint(6) DEFAULT NULL,
`Year` year(4) DEFAULT NULL,
`Price` decimal(10,2) DEFAULT NULL,
PRIMARY KEY (`ISBN`)
)
CREATE TABLE IF NOT EXISTS `bookauthor` (
`ISBN` bigint(13) NOT NULL,
`BSN` int(9) NOT NULL,
PRIMARY KEY (`ISBN`,`BSN`),
KEY `bookauthor_ibfk_2` (`BSN`)
)
CREATE TABLE IF NOT EXISTS `publisher` (
`name` varchar(48) NOT NULL,
`location` varchar(48) NOT NULL,
`sales volume` double NOT NULL,
`logo` longblob NOT NULL
)
CREATE TABLE IF NOT EXISTS `sales` (
`date` date NOT NULL,
`publisher` varchar(48) NOT NULL,
`isbn` int(48) NOT NULL,
`amount_sold` int(48) NOT NULL
);
我的问题是, 我希望有一个触发器来更新发布商表中的销售量,其中包含更新销售表时的销售量。这需要在某个发布者上发生,并且触发器需要类似(amount_sold * price)但我不知道如何执行此操作:(
答案 0 :(得分:0)
CREATE TRIGGER
trg_sales_ai
AFTER INSERT
ON sales
FOR EACH ROW
BEGIN
UPDATE publisher p
CROSS JOIN
book b
SET p.`sales volume` = p.`sales volume` + NEW.amount_sold * b.price
WHERE p.name = NEW.publisher
AND b.ISBN = NEW.isbn
END;