Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL错误“1054”;“字段列表中的未知列”;带扳机_Mysql_Sql_Database_Triggers - Fatal编程技术网

MySQL错误“1054”;“字段列表中的未知列”;带扳机

MySQL错误“1054”;“字段列表中的未知列”;带扳机,mysql,sql,database,triggers,Mysql,Sql,Database,Triggers,想知道是否有人能帮忙 我正在使用MySQL。我的数据库中有两个表,locker和locker\ulocker\u Occupation是一个指向学生表的链接表,记录哪些学生拥有哪些储物柜,locker表是关于每个储物柜的信息。在locker中有一个布尔列,用于说明是否使用了locker。为此,我尝试创建一个触发器,以便当locker\u表中的locker\u id在locker\u属性中引用时,locker\u take布尔值将变为true。模式接受触发器,我可以将数据插入locker。但是,插

想知道是否有人能帮忙

我正在使用MySQL。我的数据库中有两个表,
locker
locker\u
locker\u Occupation
是一个指向学生表的链接表,记录哪些学生拥有哪些储物柜,
locker
表是关于每个储物柜的信息。在
locker
中有一个布尔列,用于说明是否使用了
locker
。为此,我尝试创建一个触发器,以便当
locker\u表中的
locker\u id
locker\u属性中引用时,
locker\u take
布尔值将变为true。模式接受触发器,我可以将数据插入
locker
。但是,插入到
locker\u possion
时会出现以下错误:

错误代码:1054。“where子句”中的未知列“locker.locker\u id”

以下是为locker和locker_创建脚本:

CREATE TABLE locker (  
    locker_id VARCHAR(7) NOT NULL,
    locker_taken BOOL NOT NULL,        
    deposit_paid BOOL NOT NULL,    
    PRIMARY KEY (locker_id) 
);
以下是插入脚本:

INSERT INTO `locker` (`locker_id`,`locker_taken`,`deposit_paid`) VALUES  
    ("LK1","0","0"), 
    ("LK2","0","0"), 
    ("LK3","0","0"), 
    ("LK4","0","0"), 
    ("LK5","0","0"), 
    ("LK6","0","0"), 
    ("LK7","0","0"), 
    ("LK8","0","0"), 
    ("LK9","0","0"), 
    ("LK10","0","0");
这是触发因素:

CREATE TRIGGER locker_availability_update
    AFTER INSERT 
    ON locker_possession
    FOR EACH ROW 
    UPDATE locker
    BEGIN
    SET locker_taken = 1 WHERE locker.locker_id = NEW.locker_id;
如果任何人有任何想法或能以任何方式提供帮助,我们将不胜感激


提前感谢。

开始的
放错了位置,应该有一个
结束的
。在MySQL中,我建议:

DELIMITER $$

CREATE TRIGGER locker_availability_update
    AFTER INSERT ON locker_possession FOR EACH ROW 
BEGIN
    UPDATE locker
        SET locker_taken = 1
        WHERE locker.locker_id = NEW.locker_id;
END; $$

奇怪的语法-删除begin语句。如果从
WHERE
子句中删除
locker
会发生什么?类似于
WHERE locker\u id=NEW.locker\u id
@P.Salmon的东西,非常有效。非常感谢。
CREATE TRIGGER locker_availability_update
    AFTER INSERT 
    ON locker_possession
    FOR EACH ROW 
    UPDATE locker
    BEGIN
    SET locker_taken = 1 WHERE locker.locker_id = NEW.locker_id;
DELIMITER $$

CREATE TRIGGER locker_availability_update
    AFTER INSERT ON locker_possession FOR EACH ROW 
BEGIN
    UPDATE locker
        SET locker_taken = 1
        WHERE locker.locker_id = NEW.locker_id;
END; $$