我对触发器有疑问。 我已经在 plpgSQL 中为 PostgreSQL 创建了一个函数,但是,现在我需要在 MySQL 中执行此操作。我几乎尝试了一切,但我不知道该怎么做。有人知道该怎么做并帮助我吗?
这是plpgSQL中的代码:
CREATE OR REPLACE FUNCTION provjera_rezultata() RETURNS TRIGGER AS $$
DECLARE
neodigrane_utakmice INT;
BEGIN
SELECT COUNT(*) INTO neodigrane_utakmice
FROM utakmice AS u
JOIN momcadi AS m1
ON m1.momcad_ID = u.momcad_a
JOIN momcadi AS m2
ON m2.momcad_ID = u.momcad_b
WHERE rezultat IS NULL;
IF neodigrane_utakmice > 0 THEN
RAISE NOTICE 'Broj utakmica bez rezultata je %', neodigrane_utakmice;
END IF;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
此外,我不知道在 MySQL 中使用什么来处理来自 PostgreSQL 的“RAISE NOTICE”。
我这样做了,但是我得到了错误:(
DELIMITER $$
CREATE TRIGGER provjera_rezultata
AFTER INSERT ON utakmice FOR EACH ROW
DECLARE broj INTEGER;
BEGIN
SELECT COUNT(*) INTO broj
FROM utakmice AS u
JOIN momcadi AS m1
ON m1.momcad_ID = u.momcad_a
JOIN momcadi AS m2
ON m2.momcad_ID = u.momcad_b
WHERE rezultat IS NULL;
IF broj > 0 THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Postoje utakmice bez konacnog rezultata!';
END IF;
END $$
最佳答案
您的代码的内部部分可以基本保持不变。
触发器是用 CREATE TRIGGER
创建的.
通知在 MySQL 中称为 signals .你做
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'An error occurred';
关于mysql - 触发器从 plpgSQL 到 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27742475/