2013-10-24 4 views
0

У меня есть имя таблицы Service(product, loca, from_agent, to_agent).триггер для принудительного внешнего ключа

product ссылка Product(pno)

from_agent ссылки Customer(cno) U Driver(drno) U Airline(Ano)

to_agent ссылки Customer(cno) U Driver(drno) U Airline(ano)

cno = Customer Number, который является другим именем таблицы "Customer", который имеет другие детали, такие as name, address т.д.

drno = Driver Number который является другим именем таблицы «Driver», который имеет другие детали, такие как name, address и т.д.

ano = Airline Number который является другим именем таблицы «Airline», который имеет другие детали, такие как depport, depttime,arrtime и т.д ..

хотел бы написать триггер, который заставит внешний ключ в таблице product проверяться перед внесением любых изменений. Предполагая прозрачность локального отображения.

+3

Почему вам не нужно ограничение * реального * внешнего ключа. –

+0

, потому что я хочу, чтобы и пользователь упомянул имя и местоположение фрагментов данных, хранящихся в удаленных местах. im делать базу данных распространения, а также иметь фрагмент данных и хранить в разных местах – JamesBond

ответ

0

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

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

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

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

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