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

标签 mysql sql database triggers create-table

我创建了这两个表:

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 上每次插入之前运行。它将首先运行查询来恢复表spatiu中相应记录中suprafata的值,然后将其与传递给的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 ;

关于mysql - 我有一个数据库。如何创建使用两个表中的信息的触发器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53584660/

相关文章:

python - Django 按外键 bool 字段排序

mysql - 如果列为空,如何在配置单元中获取不同的行

mysql - 在 MySQL 中将数据从一列移动到另一列

php - 如何在 Codeigniter 中将所有上传图像的文件名添加到数据库中?

php - 如何解决未捕获的 PDOException "SQLSTATE[HY000] [1045] Access denied for user..."?

SQL:如何从同一个表中选择两个 ID 作为两个名称?

sql - 为什么 sqlParameter 请求一个 sourceColumn?

Java mySQL登录问题

mysql - 限制 SQL 查询的某些属性

php - 在 CakePHP 和 MySQL 中获取每日销售值