gpt4 book ai didi

插入触发器后的 MySQL 获取自动增量值,插入后更新字段值给出 "Unknown column"错误

转载 作者:可可西里 更新时间:2023-11-01 07:03:37 24 4
gpt4 key购买 nike

我试图找出一个触发器,将插入时自动生成的自动递增“ID”主键字段的值分配给另一个字段“Sort_Placement”,以便它们在插入后相同。

如果您想知道我为什么这样做,'Sort_Placement' 用作表格中的排序值,可以更改但默认情况下记录添加到表格的底部

表格数据

`ID` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`Account_Num` mediumint(8) unsigned NOT NULL,
`Product_Num` mediumint(8) unsigned NOT NULL,
`Sort_Placement` mediumint(8) unsigned DEFAULT NULL,
`Order_Qty_C` smallint(6) NOT NULL DEFAULT '0',
`Order_Qty_B` smallint(6) NOT NULL DEFAULT '0',
`Discount` decimal(6,2) NOT NULL DEFAULT '0.00',
PRIMARY KEY (`ID`),
UNIQUE KEY `ID_UNIQUE` (`ID`)

插入触发器后

CREATE 
TRIGGER `order_guide_insert_trigger`
AFTER INSERT ON `order_guide`
FOR EACH ROW
BEGIN
IF Sort_Placement IS NULL THEN
SET Sort_Placement = NEW.ID;
END IF;
END;

我已经尝试了一堆使用“NEW”前缀的组合,但没有成功。例如在每个字段名前加上 NEW 前缀。

尝试一下

INSERT INTO `order_guide` (`Account_Num`, `Product_Num`) VALUES ('5966', '3');

插入错误

ERROR 1054: Unknown column 'Sort_Placement' in 'field list'

最佳答案

这看起来有点像 hack 工作,但我能够使用 MySQL 内置的 LAST_INSERT_ID() 函数让它工作。

CREATE TRIGGER `order_guide_insert_trigger`
BEFORE INSERT ON `order_guide`
FOR EACH ROW
BEGIN
IF NEW.Sort_Placement IS NULL THEN
SET NEW.Sort_Placement = LAST_INSERT_ID() + 1;
END IF;
END;

这也有效并且似乎有效

CREATE TRIGGER `order_guide_insert_trigger`
BEFORE INSERT ON `order_guide`
FOR EACH ROW
BEGIN
IF NEW.Sort_Placement IS NULL THEN
SET NEW.Sort_Placement = (SELECT ID FROM order_Guide ORDER BY id DESC LIMIT 1) + 1;
END IF;
END;

关于插入触发器后的 MySQL 获取自动增量值,插入后更新字段值给出 "Unknown column"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16597467/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com