我需要帮助在 mySQL Bench 上创建 BEFORE INSERT TRIGGER。我是新手,请。
CREATE TABLE `quincyninying`.`toytracking` (
`Toyid` INT NOT NULL,
`ToyName` VARCHAR(50) NULL,
`Toycost` DECIMAL NULL,
`ToyAction` VARCHAR(50) NULL,
`ActionDate` DATETIME NULL,
PRIMARY KEY (`Toyid`));
CREATE TABLE `quincyninying`.`toy` (
`Toyid` INT NOT NULL,
`ToyName` VARCHAR(50) NULL,
`Toycost` DECIMAL NULL,
PRIMARY KEY (`Toyid`));
在 toy 表上创建一个 BEFORE INSERT 触发器,该触发器将一条记录添加到 toytracking 表,其中包含正在 INSERTED 的 toy 表记录中的信息、硬编码的 ToyAction(将为“INSERT”)以及该记录的当前日期和时间已插入。
ERROR 1054: Unknown column 'inserted' in 'NEW' SQL Statement:
CREATE DEFINER = CURRENT_USER TRIGGER `quincyninying`.`toy_BEFORE_INSERT` BEFORE INSERT ON `toy`
FOR EACH ROW
BEGIN
IF new.inserted THEN
SET @toyaction = 'DELETE';
ELSE
SET @toyaction = 'NEW';
END IF;
INSERT INTO `quincyninying`.`toytracking` (toyId, ToyName, ToyCost, Toyaction, ActionDate)
VALUES (new.toyid, new.Toyname, new.Toycost,@Toyaction, now());
END
它向我抛出一个错误,提示“错误 1054:‘新’中插入了未知列”
最佳答案
摆脱 IF new.inserted
测试,因为没有具有该名称的列,只需将 INSERT
硬编码为 ToyAction 的值
列,如您在要求中所述。
CREATE DEFINER = CURRENT_USER TRIGGER `quincyninying`.`toy_BEFORE_INSERT` BEFORE INSERT ON `toy`
FOR EACH ROW
BEGIN
INSERT INTO `quincyninying`.`toytracking` (toyId, ToyName, ToyCost, Toyaction, ActionDate)
VALUES (new.toyid, new.Toyname, new.Toycost, 'INSERT', now());
END
关于mysql - 在 MYSQL 中创建 BEFORE INSERT 触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40521292/