У меня есть база данных.Как создать триггер, который использует информацию из двух таблиц? - PullRequest
0 голосов
/ 03 декабря 2018

Я создал эти две таблицы:

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.Извините, что не уточнил.

1 Ответ

0 голосов
/ 03 декабря 2018

Вот фрагмент кода, который должен отвечать вашим потребностям.

Триггер будет запускаться перед каждой вставкой на 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 ;
...