我有一个数据库如何创建使用两个表中的信息的触发器?

r55awzrz  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(378)

我创建了这两个表:

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。很抱歉没有具体说明。

6l7fqoea

6l7fqoea1#

下面是一个代码片段,应该满足您的需要。
触发器将在上的每个插入之前运行 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 ;

相关问题