2009-06-10 4 views
0

Мой сценарий У меня есть таблица с столбцами A, B, C и D. A - это PK, а B и C - оба внешних ключа.Дублирующие значения столбцов в таблице

Я намерен добавить столбец Exta к этой таблице E, побочный эффект этого внутри приложения это вызовет ряд должен быть вставлен, после чего будет повторяющиеся значения в столбцах B и C.

Разве это нарушает какие-либо реферальные правила? Я предполагаю, что, если какие-либо соединения выполняются с этой таблицей по этим внешним ключам, то они больше не будут возвращать уникальную строку.

Спасибо,

ответ

3

Если отношение один ко многим, вы не нарушая ссылочный правило, имея несколько строк, относящихся к одному внешнему подряду.

Добавление дополнительной колонки таким образом может привести к поломке существующих приложений. Запрос, как это, что используется для возврата одной строки, может теперь возвращает много строк:

select * 
from table 
where b=1 and c=2 
+0

Спасибо Andomar - его один ко многим, поэтому я в безопасности. – 2009-06-10 14:08:04

0

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

+0

Спасибо за комментарий HLGEM. Это очень важный момент. Я думаю, что соединения были использованы в отличие от подкатегорий, поэтому мне может быть повезло здесь. еще раз спасибо – 2009-06-10 15:01:51

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