【发布时间】:2015-12-27 11:07:52
【问题描述】:
您好,这是我的tbl_patient 结构:
CREATE TABLE tbl_patient
(
id int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
idPatient varchar(15) DEFAULT NULL,
namePatient varchar(40) NOT NULL,
age int NOT NULL,
birthDate date,
gender varchar(15) NOT NULL,
status varchar(15) NOT NULL,
address varchar(255) NOT NULL,
work varchar(25) NOT NULL,
phone varchar(15) NOT NULL
)
ENGINE=InnoDb;
我想在 tbl_patient 上放置 2 个触发器:
CREATE TRIGGER patientTrigger
BEFORE INSERT ON tbl_patient
FOR EACH ROW
SET NEW.idPatient = CONCAT("PAS-",COALESCE((SELECT MAX(id)+1 from tbl_patient),1));
CREATE TRIGGER ageTrigger
BEFORE INSERT ON tbl_pasien
FOR EACH ROW
SET NEW.age = YEAR(CURDATE()) - YEAR(birthDate);
但是我遇到了一些错误:
1235 - 此版本的 MariaDB 尚不支持“一个表具有相同操作时间和事件的多个触发器”
如何在我的桌子上实现这 2 个触发器?
【问题讨论】:
-
你到底想在这里做什么?
(SELECT MAX(id)+1 from tbl_patient)-- 这几乎正是AUTO_INCREMENT所做的。但这样做的方式不安全。 -
由于
age不断变化;在SELECT中计算它; 不要存储它。
标签: mysql sql triggers mariadb mariasql