1
我試圖在我的PHP Internet應用程序中保留當前內容和歸檔內容的列表。我希望能夠識別歸檔爲具有enddate的內容,以及未歸檔爲沒有enddate的內容。如果我可以創造更多路徑,這將是理想的,但我希望從這裏開始。將日期更新爲觸發器的一部分?
我注意到的第一件事是,我在「在線1上得到語法錯誤,但是在創建表時沒有雙引號。我遇到的第二個問題是使用TIMESTAMP
作爲一個數據類型,我嘗試使用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";
我相信你,但我仍然在這裏得到一個錯誤:'CREATE TABLE planIDxlevelID( planID INT NOT NULL REFERENCES plan(id), levelID INT NOT NULL REFERENCES level(id), arXORcur ENUM('archive','current');'它表示錯誤接近「,但沒有雙引號。奇怪的是,對嗎? – 2011-12-19 09:10:37
它不是雙引號('''),它是一個雙撇號('''')。你錯過了右括號。它應該看起來像...... arXORcur ENUM('archive' ,'current'));'(結束時注意雙括號)。我的壞 - 我不知何故在那裏得到了一個分號。你可以從我的(編輯)帖子上面複製修正版本 – Bohemian 2011-12-19 11:09:22
哦。甜。是的,這不完全是我以前的事,但這是一個巨大的進步。這比其他任何人帶給我的還要多。所以,非常感謝幫助,波希米亞人。 – 2011-12-19 11:13:04