我正在尝试创建一个触发器,在任何行成功执行更新后,将列last_modified设置为CURRENT_TIMESTAMP
。我在java中使用h2库。
这是我的表格声明
CREATE TABLE Professors
(utorID VARCHAR(30) NOT NULL,
FName VARCHAR(20),
LName VARCHAR(20),
Email VARCHAR(50),
UTEmail VARCHAR(50),
Birthdate VARCHAR(10),
OfficeBC VARCHAR(2),
OfficeRM VARCHAR(6),
Department VARCHAR(20),
Status VARCHAR(50),
Fellowship VARCHAR(20),
OfficeStat VARCHAR(15),
PhoneNum VARCHAR(10),
HomeAddr VARCHAR(50),
HomePhoneNum VARCHAR(10),
Notes VARCHAR(100),
last_modified TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
lastPerson VARCHAR(50),
PRIMARY KEY (utorID),
CONSTRAINT uc_ProfNames UNIQUE(FName, LName)) ENGINE=InnoDB;
这是我的触发器ATTEMPT ONE:
CREATE TRIGGER Update_Time_Profs
AFTER UPDATE ON
Professors
FOR EACH ROW
BEGIN
UPDATE Professors
SET last_modified=CURRENT_TIMESTAMP
WHERE utorID=OLD.utorID;
END;
这是我的触发器ATTEMPT TWO,因为我读到在更新触发器内无法更新(因为这可能导致无限循环),即使我在SQLite中使用了上述内容并且它正常工作:< / p>
CREATE TRIGGER Update_Time_Profs
BEFORE UPDATE ON
Professors
FOR EACH ROW
BEGIN
SET NEW.last_modified=CURRENT_TIMESTAMP;
END;
但两个都没有工作:(
提前感谢您的帮助
答案 0 :(得分:1)
一种选择是同时避免所有触发器,并将last_modified
列的列定义更改为:
`last_modified` timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
应该做的诀窍......