gpt4 book ai didi

mysql - 错误代码 : 1109. 字段列表中的未知表 'new'

转载 作者:太空宇宙 更新时间:2023-11-03 11:33:39 24 4
gpt4 key购买 nike

我正在创建一个数据库,我在其中使用触发器验证输入数据。我添加成功了,但是当我尝试输入精细数据时出现错误。

创建数据库、表和触发器

CREATE DATABASE IF NOT EXISTS DBWorkers;

CREATE TABLE IF NOT EXISTS Ludzie(
PESEL char(11) NOT NULL,
imie varchar(30) NOT NULL,
nazwisko varchar(30) NOT NULL,
data_urodzenia date NOT NULL,
wzrost float NOT NULL,
waga float NOT NULL,
rozmiar_buta int NOT NULL,

PRIMARY KEY(PESEL));

DELIMITER $$
CREATE FUNCTION check_pesel(PESEL char(11)) RETURNS bool
BEGIN
IF(
CHAR_LENGTH(NEW.PESEL) <> 11 AND
CONVERT(PESEL, SIGNED INT) > 0 AND
CONVERT(LEFT(PESEL,2), SIGNED INT) BETWEEN 0 AND 99 AND
CONVERT(SUBSTRING(PESEL,3,2), SIGNED INT) BETWEEN 1 AND 12 AND
CONVERT(SUBSTRING(PESEL,3,2), SIGNED INT) BETWEEN 1 AND DAY(LAST_DAY(CONCAT('19',LEFT(PESEL,2),'-',SUBSTRING(PESEL,3,2),'-01')))
)
THEN
RETURN TRUE;
ELSE
RETURN FALSE;
END IF;
END $$

CREATE TRIGGER `ludzie_data_check_before_insert` BEFORE INSERT ON `Ludzie`
FOR EACH ROW
BEGIN
IF NOT(
check_pesel(NEW.PESEL) AND
NEW.WZROST > 0.0 AND
NEW.WAGA > 0.0 AND
NEW.ROZMIAR_BUTA > 0
)
THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'check on Ludzie failed during insert';
END IF;
END $$
DELIMITER ;

当我尝试输入数据时

INSERT INTO Ludzie VALUES ('7810396705', 'Anders', 'Kennedy','1958-08-20', 1.70, 88.6, 43)

我明白了

Error Code: 1109. Unknown table 'new' in field list

我已经尝试打开和关闭 mysql 服务器,检查我是否对正确的数据库执行此操作。一切看起来都很好,但事实并非如此:/

最佳答案

我想我发现了你的问题:

CHAR_LENGTH(NEW.PESEL) <> 11 AND
CONVERT(PESEL, SIGNED INT) > 0 AND

这是 NEW.PESEL 和 PESEL 的不一致用法,你不应该在不向数据库添加任何内容的函数中使用关键字 new。在此上下文中,错误将 NEW 识别为表而不是关键字。

关于mysql - 错误代码 : 1109. 字段列表中的未知表 'new',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47706464/

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