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

问题描述 投票:0回答:1

我创建了这两个表:

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

mysql sql database triggers create-table
1个回答
0
投票

这是一个应该满足您需求的代码段。

触发器将在oferta上的每个插入之前运行。它将首先运行查询以在表suprafata的相应记录中恢复spatiu的值,然后将其与传递给插入顺序的pret值进行比较。当pret(严格地)小于suprafata的两倍时,触发器会修改pretmoneda的值。

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 ;
© www.soinside.com 2019 - 2024. All rights reserved.