То, что я хочу сделать, кажется относительно простым. У меня есть 2 таблицы, [ideas] и [my_projects]. Я ищу триггер, который добавляет запись из идей в my_projects, когда статус статуса идеи изменяется на «закрыто».
Вот мои таблицы:
CREATE TRIGGER triggerNEWPROJECT ON IDEAS
AFTER INSERT, UPDATE
AS
DECLARE
@ID varchar(255), @NEW_STATUS varchar(255), @NEW_NAME varchar(255), @OLD_STATUS varchar(255);
SET @ID = IDEAS.ID;
SET @NEW_STATUS = 'NEW';
set @NEW_NAME = new.NAME
set @OLD_STATUS = (SELECT STATUS FROM IDEAS WHERE ID = @ID)
BEGIN
if @OLD_STATUS = 'closed'
INSERT INTO MY_PROJECTS (IDEA_ID, STATUS) VALUES(@ID, @NEW_NAME, @NEW_NAME);
END;
Когда статус идеи обновляется до «Закрыто», я хотел бы, чтобы он создал проект с тем же именем, что и у только что закрытой идеи, но со статусом «Новый» в таблице My_Projects.
Кажется, это должно быть легко, но это не работает, и мне совершенно ясно, что я не знаю, что делаю.
Вот мой триггерный код:
CREATE TRIGGER triggerNEWPROJECT ON IDEAS
AFTER INSERT, UPDATE
AS
DECLARE
@ID varchar(255), @NEW_STATUS varchar(255), @NEW_NAME varchar(255), @OLD_STATUS varchar(255);
SET @ID = IDEAS.ID;
SET @NEW_STATUS = 'NEW';
set @NEW_NAME = new.NAME
set @OLD_STATUS = (SELECT STATUS FROM IDEAS WHERE ID = @ID)
BEGIN
INSERT INTO MY_PROJECTS (IDEA_ID, STATUS) VALUES(@ID, @NEW_NAME, @NEW_NAME);
END;
Я бы хотел, чтобы поле ID в таблице Projects было просто auto_increment, и я считаю, что настроил его для этого. Кто-нибудь может указать мне правильное направление здесь?
Большое спасибо!