我有一个数据库。如何创建一个使用来自两个表的信息的触发器?
I have a database. How do I create a trigger that uses information from two tables?
我创建了这两个表:
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。很抱歉没有指定。
这是一个代码片段,可以满足您的需要。
触发器将在 oferta
上的每个插入之前 运行。它会先运行一个查询来恢复tablespatiu
对应记录中suprafata
的值,然后将其与传递给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 ;
我创建了这两个表:
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。很抱歉没有指定。
这是一个代码片段,可以满足您的需要。
触发器将在 oferta
上的每个插入之前 运行。它会先运行一个查询来恢复tablespatiu
对应记录中suprafata
的值,然后将其与传递给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 ;