2013-11-30 3 views
1

У меня есть записи в таблице A, которые после создания не должны быть изменены. Простое предотвращение обновления атрибутов с помощью триггера.Сделать отношения неизменяемыми

Проблема заключается в том, что таблица A также имеет отношение многих ко многим со строкой B. Теперь то, что я хочу сделать, это предотвратить обновление таблицы соединений (т.е. вставить/обновить/удалить) для записей в таблице A, которая уже создана (и еще не удалена).

Цель состоит в том, чтобы иметь не только постоянные атрибуты, но и постоянные отношения. Есть идеи?

PS Я не знаю, является ли это проблемой, но таблица A имеет составной первичный ключ, который может измениться.

ответ

1

Скажите, что много: много таблиц TableAB (colA, colB), и оно соединяет таблицы A и B. Кто делает вставку на многие: многие (присоединяются) строки? У вас есть контроль над этим? Как я его понимаю, вы хотите, чтобы эта вставка произошла только один раз для заданной/фиксированной строки A.

Добавить столбец IsAlreadyMapped в таблице A. Когда кто-то сопоставляет строку A с множеством S строк из таблицы B, установите этот флаг IsAlreadyMapped равен 1. Обратите внимание, что множество S строк из B также может быть пустым. После того, как IsAlreadyMapped установлен в 1, не позволяйте кому-либо сопоставлять одну строку A другому набору строк из таблицы B. Я думаю, что это достаточно просто. Когда вы удаляете строку A (физически или логически), вы можете обновить IsAlreadyMapped по мере необходимости. Затем вы можете добавить такой столбец и на стороне таблицы B.

Я не уверен, что знаю все детали ваших требований, , поэтому я просто выбрасываю некоторые идеи здесь. Надеюсь, поможет.

Смежные вопросы