Я хочу изменить поле во всех строках таблицы при обновлении другого.
У меня есть игровой стол, таблица рефери (с нацией) и таблица нации.
Теперь я хочу автоматически обновить referee_nation_Name из таблицы игр, если кто-то обновит national_id в таблице рефери.
Моя проблема в том, что я не знаю, как получить рефери_ид (который уникален), когда кто-то обновляет national_id в этой таблице. Если я выбрать все referee_id, которые являются как: new.nation_id я буду получать другие судейские идентификаторы из народов, жизнь в этой стране ... вот мой нерабочем триггер:Таблица обновлений ORACLE TRIGGER, если другая обновлена
CREATE OR REPLACE TRIGGER name
AFTER UPDATE OF nation_id ON referee
FOR EACH ROW
DECLARE
nationname VARCHAR2(150);
BEGIN
SELECT n.name INTO nationname
FROM nation n, referee r, game g
WHERE n.nation_id = r.nation_id AND g.referee_id = :old.referee_id);
UPDATE game SET referee_nation_Name = nationname WHERE referee_id = :old.referee_id;
END;
Почему вы храните имя нации в таблице «рефери» в первую очередь? Ваша модель данных должна быть правильно нормирована. Таким образом, вы не должны хранить имя нации рефери, если у вас уже есть ссылка на таблицу 'nation', где она уже сохранена. –
Я знаю, но это для школы. так что я должен это сделать ... ^^ – user1069968
Вам не хватает условия соединения в вашем заявлении select (не произойдет, если вы использовали явный 'JOIN') –