Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.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 - Fatal编程技术网

Mysql 错误代码:1054。未知列';逻辑删除标志';在';字段列表';

Mysql 错误代码:1054。未知列';逻辑删除标志';在';字段列表';,mysql,Mysql,虽然这里有许多问题与我现在遇到的问题相似,但我尝试过的答案不起作用。根据下表和触发器脚本,出现标题主题的原因和解决方案是什么 CREATE TABLE todolist ( sequence_number INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, to_do_item VARCHAR(45) NOT NULL, done_status BOOLEAN DEFAULT FALSE, active_flag BOOLEA

虽然这里有许多问题与我现在遇到的问题相似,但我尝试过的答案不起作用。根据下表和触发器脚本,出现标题主题的原因和解决方案是什么

CREATE TABLE todolist (
    sequence_number INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
    to_do_item VARCHAR(45) NOT NULL,
    done_status BOOLEAN DEFAULT FALSE,
    active_flag BOOLEAN DEFAULT TRUE,
    last_action_code VARCHAR(45) NOT NULL,
    create_pid VARCHAR(45),
    create_datetime TIMESTAMP,
    read_pid VARCHAR(45),
    read_datetime TIMESTAMP,
    update_pid VARCHAR(45),
    update_timestamp TIMESTAMP,
    delete_pid VARCHAR(45),
    delete_timestamp TIMESTAMP,
    logical_delete_flag BOOLEAN DEFAULT FALSE
);



SQL命令的顺序:

INSERT INTO todolist(to_do_item) VALUE ('Prepare for the assignment');
UPDATE todolist SET to_do_item = 'Check on how to start on the assignment' WHERE sequence_number = 1;

然后,出现了错误。

您没有在更新之前的
触发器中使用
逻辑删除标记
周围的
旧的
新的
关键字。要访问受触发器影响的行中的列,需要根据场景使用以下关键字之一

对于您来说,您应该在要测试真/假的列周围使用
OLD

DELIMITER ;;
CREATE TRIGGER todolist_trigger_on_record_update
    BEFORE UPDATE ON todolist
    FOR EACH ROW
        BEGIN
            IF (OLD.logical_delete_flag IS TRUE) THEN
                SET NEW.delete_timestamp = NOW(),
                    NEW.delete_pid = 'todolist_trigger_on_record_logical_delete',
                    NEW.last_action_code = 'LOGICAL_DELETE';
            ELSE
                SET NEW.update_timestamp = NOW(),
                    NEW.update_pid = 'todolist_trigger_on_record_update',
                    NEW.last_action_code = 'UPDATE';
            END IF;
        END;;
DELIMITER ;
INSERT INTO todolist(to_do_item) VALUE ('Prepare for the assignment');
UPDATE todolist SET to_do_item = 'Check on how to start on the assignment' WHERE sequence_number = 1;
DELIMITER ;;
CREATE TRIGGER todolist_trigger_on_record_update
    BEFORE UPDATE ON todolist
    FOR EACH ROW
        BEGIN
            IF (OLD.logical_delete_flag IS TRUE) THEN
                SET NEW.delete_timestamp = NOW(),
                    NEW.delete_pid = 'todolist_trigger_on_record_logical_delete',
                    NEW.last_action_code = 'LOGICAL_DELETE';
            ELSE
                SET NEW.update_timestamp = NOW(),
                    NEW.update_pid = 'todolist_trigger_on_record_update',
                    NEW.last_action_code = 'UPDATE';
            END IF;
        END;;
DELIMITER ;