mysql - 如何在一个表中与其他表中的数据进行计数? mysql

标签 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 * 价格)的东西,但我不知道如何做到这一点:(

最佳答案

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;

关于mysql - 如何在一个表中与其他表中的数据进行计数? mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24492307/

相关文章:

mysql - 如何使用 MySQL 有条件地创建索引?

java - 显示 : exception is never thrown in body of try statement 的语法警告

Mysql - 根据两列的前三个字母比较选择行

sql - 检索任意时间间隔的聚合

mysql - 使用 Hibernate 查询缓存时的缓存更新

php - 使用redis的新闻提要

mysql - 使用 Json_value 的 T-sql 语法不正确

php - 如何防止 PHP 中的 SQL 注入(inject)?

MySQL seek-then-scan 优化 Limit Offset

c# - 从存储过程刷新数据