2013-09-10 2 views
0

У меня есть данные о резервировании таблиц, в которых есть столбцы, а один из столбцов - дата создания. Я хочу создать триггер, который проверяет, является ли дата создания первым днем ​​года. Если это так, вставьте значения в таблицу master_ids. Я создал триггер, но не знаю, правильно ли это или нет. Мой проект находится в php.Как создать триггер, чтобы найти первый день года?

CREATE TRIGGER upd_check BEFORE INSERT ON ColdStorage.ReservationDetails 
    FOR EACH ROW 
BEGIN 
    IF NEW.creationdate = DATE_FORMAT(NOW() ,'%Y-01-01') then 
      UPDATE master_ids SET nextOccId="1",nextResId="1",nextAgrnoId="1",nextRecNo="1"; 
    END if; 
END; 

Пожалуйста, предложите мне несколько решений. Я также хочу, чтобы, если дата 01-01-yy, тогда .. ее не следует вставлять строку, которую я вставляю.

+0

Вы проверили его? Работает ли он так, как ожидалось? Получаете ли вы какие-либо сообщения об ошибках, если нет? –

+0

да это дает мне ошибки – Divyang

+0

логика правильная? – Divyang

ответ

1

Необходимо изменить разделитель. MySQL видит первый; как конец инструкции CREATE TRIGGER, и думает, что все заявление заканчивается там. Поэтому вы должны изменить разделитель следующим образом:

/* Change the delimiter */ 
DELIMITER $$ 

CREATE TRIGGER upd_check BEFORE INSERT ON ColdStorage.ReservationDetails 
FOR EACH ROW 
BEGIN 
    IF NEW.creationdate = DATE_FORMAT(NOW() ,'%Y-01-01') then 
     insert into master_ids values ('0','0','0','0'); 
    END if; 
END$$ 
/* the CREATE TRIGGER statement ends with new delimiter */ 

/* change the delimiter back to ; */ 
DELIMITER ; 

Я не тестировал его, но он кажется прекрасным. Меня беспокоит то, что это будет работать только на один день в течение года, а остальные 364 (365) дней совершенно бесполезны и выглядят как накладные расходы.

+0

Его работы. но проблема в том, как это проверить. дата создания SYSDATE – Divyang

+0

Надеюсь, у вас есть тестовая среда, в которой вы можете создать этот триггер с сегодняшней датой, а не с 01 января. Тогда, если он работает сегодня, нет причин, по которым он не должен работать 01.01. в любом году. – Zagor23

+0

u r right его работа на 1 день только .... не для других 364 дней ... – Divyang

Смежные вопросы