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 ;