Я пытаюсь сохранить список текущего и заархивированного контента в моем PHP-интернет-приложении.Я хочу иметь возможность идентифицировать контент, который заархивирован как имеющий конечную дату, и контент, который не заархивирован как не имеющий конечной даты.Было бы идеально, если бы я мог создать больше путей, но я надеюсь просто начать здесь.
Первое, на что я обращаю внимание, это то, что я получаю синтаксическую ошибку в "в строке 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";