Mysql синтаксис триггера (ЕСЛИ НЕ СУЩЕСТВУЕТ) - PullRequest
0 голосов
/ 29 мая 2020

У нас есть две таблицы (Клуб, Деревня)

Club(id, Name, Location, Village)
Village(id, name)

Профессор привел нам такой пример ...

CREATE TRIGGER tg_add_club
AFTER INSERT ON Club
REFERENCING NEW AS uus
FOR EACH ROW
BEGIN
    IF (NOT EXISTS ( 
        )
        THEN 
        )
    END IF;

    UPDATE Club
END;

Я не понимаю синтаксиса. Я пробовал использовать этот пример

CREATE TRIGGER tg_add_club
AFTER INSERT ON Club
REFERENCING NEW AS uus
FOR EACH ROW
BEGIN
    IF uus.Club.Location (NOT EXISTS ( Village.name 
        )
        THEN INSERT INTO Village (name) VALUES (uus.Club.location)
        )
    END IF;

    UPDATE Club SET (Village.name = uus.Location)
END;

Очевидно, это не работает, это больше похоже на псевдокод ... но это должно дать представление. Как исправить свой код?

Если что-то не понятно, то я постараюсь добавить дополнительную информацию

1 Ответ

1 голос
/ 29 мая 2020

Трудно угадать, что вы хотите, так как псевдокод или нет, это нонсенс.

некоторые исправления

CREATE TRIGGER tg_add_club
AFTER INSERT ON Club
FOR EACH ROW
BEGIN
    IF NOT EXISTS (select 1 from Village where name = new.location THEN 
       INSERT INTO Village (name) VALUES (new.location)
    else
      #UPDATE Club SET (Village.name = uus.Location)
    end if;
END

примечание - Это синтаксис mysql, нет ссылаясь на предложение, вы не можете обновить CLUB, вам может потребоваться установить разделители

...