我创建了这两个表:
CREATE TABLE oferta
(
id_agentie INT,
id_spatiu INT,
vanzare CHAR(1),
pret INT,
moneda CHAR(5),
CONSTRAINT pk_oferta PRIMARY KEY(id_agentie, id_spatiu)
);
CREATE TABLE Spatiu
(
id_spatiu INT PRIMARY KEY,
adresa VARCHAR(45),
zona INT,
suprafata INT,
id_tip INT
);
我需要创建一个触发器,每当我插入一个新的“ pret”时。如果“ pret”的值小于2 *“ suprafata”,那么我想将“ pret”的值更改为2 *'suprafata'和'moneda'的值转换为'EUR'。
我已经尝试过,但是我无法完成它。
编辑:我正在使用MySql。抱歉,未指定。
答案 0 :(得分:0)
这是一个应满足您需求的代码段。
触发器将在oferta
上的每次插入之前运行。它将首先运行查询以恢复表suprafata
的对应记录中的spatiu
的值,然后将其与传递给插入顺序的pret
的值进行比较。当pret
(严格地)小于两次suprafata
时,触发器将修改pret
和moneda
的值。
DELIMITER //
CREATE TRIGGER my_trigger
BEFORE INSERT ON oferta
FOR EACH ROW
BEGIN
DECLARE v1 INT;
SELECT suprafata INTO v1 WHERE id_spatiu = NEW.id_spatiu;
IF ( NEW.pret < 2 * v1) THEN
NEW.pret = 2 * v1;
NEW.moneda = 'EUR';
END IF
END//
DELIMITER ;