使用SQLite管理器,我正在尝试创建一个触发器,该触发器根据正在更改的另一个字段更新一个字段:
CREATE TRIGGER staff_update
AFTER UPDATE OF c_doctor ON tickets
WHEN OLD.c_doctor <> NEW.c_doctor
BEGIN
UPDATE tickets
SET c_doctor_staff_contact = doctor_staff_contact.c_doctor_staff_contact
WHERE NEW.c_doctor = doctor_staff_contact.c_doctor;
END
c_doctor
是tickets
表和doctor_staff_contact
表中的字段名称。doctor_staff_contact
也是这些表中的一个字段的名称。SET c_doctor_staff_contact = "test"; END
可以工作,所以我的假设是= doctor_staff_contact.c_doctor_staff_contact WHERE NEW.c_doctor = doctor_staff_contact.c_doctor; END
给我带来了问题。据我所知,我做的是对的。
= c_doctor_staff_contact IN (SELECT c_doctor_staff_contact FROM doctor_staff_contact
WHERE NEW.c_doctor = doctor_staff_contact.c_doctor);
END
这会起作用,但会将c_doctor_staff_contact
更改为0,并将所有其他票证c_doctor_staff_contact
也更改为0。
1条答案
按热度按时间vs91vp4v1#
触发器主体中的
UPDATE
查询应如下所示: