如何在表格中使用来自另一个表格的数据? MySQL的

时间:2014-06-30 14:21:00

标签: mysql sql

我遇到触发器的问题我需要让我告诉你我有什么,然后问题是什么。

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)但我不知道如何执行此操作:(

1 个答案:

答案 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;