我有兩張表,圓形和事件。一輪有許多事件。在MySQL觸發器中比較日期
create table round (
round_id INTEGER AUTO_INCREMENT NOT NULL,
round_start_date DATETIME NOT NULL,
round_end_date DATETIME NOT NULL,
CONSTRAINT round_pk PRIMARY KEY (round_id)
);
create table event (
event_id INTEGER AUTO_INCREMENT NOT NULL,
round_id INTEGER NOT NULL,
event_date DATETIME NOT NULL,
CONSTRAINT event_pk PRIMARY KEY (event_id),
CONSTRAINT round_fk FOREIGN KEY (round_id) REFERENCES round (round_id),
);
當行插入事件表,我想用一個觸發新插入的行的EVENT_DATE領域比較在圓桌其相應的條目round_start_date和round_end_date領域。如果event_date早於round_start_date,則應使用新的event_date更新round_start_date。如果event_date在round_end_date之後,則應使用新的event_date更新round_end_date。
這是我的觸發器。它不起作用,我不明白爲什麼。我無法在網上找到其他人試圖在觸發器中使用日期時間類型的任何地方,因此我沒有任何參考資料可以指出我出錯的地方。
create trigger update_round_date
after insert on event for each row
begin
declare curSdate datetime;
declare curEdate datetime;
set curSdate = (select round_start_date from round where round_id = NEW.round_id);
set curEdate = (select round_end_date from round where round_id = NEW.round_id);
if (NEW.event_date < curSdate) then
update round set round_start_date = NEW.event_date where round_id = NEW.round_id;
else if (NEW.event_date > curEdate) then
update round set round_end_date = NEW.event_date where round_id = NEW.round_id;
end if;
end;
編輯:我根本無法創建觸發器。 phpMyAdmin給了我這個錯誤: 「#1064 - 你的SQL語法錯誤;檢查對應於你的MySQL服務器版本的手冊,在第4行使用正確的語法」
編輯2:用分隔符更新設置
DELIMITER $$
create trigger update_round_date
after insert on event for each row
begin
declare curSdate datetime;
declare curEdate datetime;
set curSdate = (select round_start_date from round where round_id = NEW.round_id);
set curEdate = (select round_end_date from round where round_id = NEW.round_id);
if (NEW.event_date < curSdate) then
update round set round_start_date = NEW.event_date where round_id = NEW.round_id;
else if (NEW.event_date > curEdate) then
update round set round_end_date = NEW.event_date where round_id = NEW.round_id;
end if;
end$$
這將返回錯誤:「#1064 - 你在你的SQL語法錯誤;檢查對應於您的MySQL服務器版本在使用‘’附近正確語法手冊第13行「
你是否收到任何錯誤,或者它是否更新奇怪的行? –
這是phpMyAdmin在我嘗試創建觸發器時給出的錯誤:#1064 - 您的SQL語法錯誤;請檢查與您的MySQL服務器版本相對應的手冊,以便在第4行的「'附近使用正確的語法。 –
可能忘記將您的分隔符設置爲」;「以外的內容第一? –