【发布时间】:2011-12-19 03:26:47
【问题描述】:
我正在尝试在我的 PHP Internet 应用程序中保留当前内容和存档内容的列表。我希望能够识别归档为具有结束日期的内容,以及未归档为没有结束日期的内容。如果我可以创建更多路径,那将是理想的,但我希望从这里开始。
我注意到的第一件事是我在第 1 行的 " 处遇到语法错误,但在我创建表的地方没有双引号。我遇到的第二个问题是使用 @ 987654321@ 作为数据类型。我尝试使用CURRENT_TIMESTAMP 作为开始日期,但它返回了语法错误。我遇到的最后一个问题是触发器构造。我无法深入解决它。因为一旦我通过参考,我也会尝试解决这个问题。
CREATE TABLE plan(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(32),
startdate TIMESTAMP NOT NULL,
enddate TIMESTAMP);
CREATE TABLE level(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(32),
description VARCHAR(500),
startdate TIMESTAMP NOT NULL,
enddate TIMESTAMP);
CREATE TABLE planIDxlevelID(
planID INT NOT NULL REFERENCES plan(id),
levelID INT NOT NULL REFERENCES level(id),
arXORcur ENUM('archive', 'current');
);
delimiter |
CREATE TRIGGER testref BEFORE INSERT ON plan
FOR EACH ROW BEGIN
INSERT INTO plan(id, plan, startdate, enddate)
SET id = LAST_INSERT_ID( id + 1), name = NEW.name, startdate = NEW.UTC_TIMESTAMP, enddate = NULL;
UPDATE plan(enddate) WHERE plan.id = OLD.id
SET enddate = UTC_TIMESTAMP;
INSERT INTO planIDxlevelID(planID, levelID, arXORcur)
SET planID = NEW.planID, levelID = OLD.levelID, arXORcur = current;
UPDATE planIDxlevelID(planID, levelID, arXORcur) WHERE planID = OLD.planID
SET planID = OLD.planID, levelID = OLD.levelID, arXORcur = archive;
END;
|
delimiter ;
INSERT INTO plan (name) VALUES
"Frogs", "Toys", "Trucks", "Nature", "Seasons",
"Construction", "Candy", "Rainbows", "Telephone", "Breakfasts";
【问题讨论】:
标签: mysql triggers timestamp reference