Создание триггера SQL - Как я могу проверить, является ли NULL или пустым? - PullRequest
0 голосов
/ 13 января 2019

Кажется, у меня проблемы с синтаксисом SQL. Я пытаюсь создать триггер, а затем проверить, являются ли данные пустыми или пустыми.

Теперь этот код благодаря Биллу и Гордону:

DROP TRIGGER IF EXISTS `tablename_OnInsert`;

    DELIMITER $$

    CREATE TRIGGER `tablename_OnInsert` BEFORE INSERT ON `users`
    FOR EACH ROW
    BEGIN
        IF NEW.`swid` IS NULL OR NEW.`swid` = '' THEN
            SET NEW.`swid` = CONCAT('{', uuid(), '}');
        END IF
    END$$
    ;

Сервер все еще отвечает 1064:

/* SQL Error (1064): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'END' at line 7 */

Я искал вокруг, чтобы увидеть, что я делаю здесь неправильно, но я просто не понимаю.

1 Ответ

0 голосов
/ 13 января 2019

Хорошо:

DROP TRIGGER IF EXISTS `tablename_OnInsert`;

DELIMITER $$

CREATE TRIGGER `tablename_OnInsert` BEFORE INSERT ON `users`
FOR EACH ROW
BEGIN
    IF NEW.`swid` IS NULL OR NEW.`swid` = '' THEN
        SET NEW.`swid` = CONCAT('{', uuid(), '}');
    END IF;
END$$

Похоже, ваша проблема - лишние ) в IF. Тем не менее, я рекомендую BEGIN / END и установку разделителя.

...