Страницы

Поиск по вопросам

пятница, 27 декабря 2019 г.

Хорошей ли считается практикой, обновлять данные в связанных таблиц, через триггеры?

#mysql #sql #sqlite


Хорошей ли считается практикой, обновлять данные в связанных (FOREIGN KEY- внешним
ключом) таблиц , через триггеры?

Есть два варианта обновления данных:

1.через триггеры

2.через внешний ключ добавив параметр -  ON UPDATE CASCADE

Какой вариант считается более предпочтительнее?

Примечание: Добавление и обновления данных, будет происходить только в родительской
таблице. Но читать мы эти данные будем из дочерней таблицы, которая связанна с родительской.
И для того что бы мы получили актуальные данные из дочерней таблицы, мы должны их как
то 'синхронно' или почти синхронно обновлять из родительской таблицы. В связи с этим,
я рассматриваю два варианта, которые описал выше. 
    


Ответы

Ответ 1



Через внешний ключ можно лишь контролировать целостность таблиц. Т.е. ForeignKeyId всегда будет указывать запись в родительской таблице. Единственные данные, которые вы можете обновить, это этот самый Id с помощью параметра ON UPDATE CASCADE Триггер даёт вам гибкость. Например, если возможно цикличное удаление, то каскадное удаление создать нельзя в принципе и тут в любом случае только триггер вас спасёт. Минус триггеров в том, что зачастую их в базе не видно и сложно понять, например, почему при удалении возникает ошибка в какой-нибудь таблице с которой, вы, вроде бы, в данный момент не работаете.

Комментариев нет:

Отправить комментарий