Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
проверка по двум и более столбцам при вводе данных в таблицу
|
|||
|---|---|---|---|
|
#18+
Товарищи, подскажите возможна ли в sql server проверка по двум и более столбцам, при добавлении данных в таблицу!?... допустим, есть 2 таблицы: (табл 1) id|| country|| city 1 || Россия || Москва 2 || Россия || Самара 3 || Италия || Рим (табл 2) name ||city||id (fk_1) Иван || Москва || NULL /* 1 - верно, 2/3 -нет*/ Сергей || Рим || NULL /*3 - верно, 1/2 - нет*/ Ольга || Сочи || NULL /*1,2,3 - не верно*/ в (табл 1) столбец "ID" это PRIMARY KEY, а в (табл 2) столбец "ID(fk_1)" это FOREIGN KEY. Соответственно, из этого примера, в "id (fk_1)" можно будет только добавить цифры 1,2 или 3 (из столбца ID, таблица 1 ). Но ведь ошибочно можно подставить 3 в первую стоку столбца "id (fk_1)" (табл 2), хотя 3 - это Рим в (табл 1) Поэтому подскажите можно ли что бы при вводе данных в (табл 2) FOREIGN KEY проверял не только данные из столбца "ID", но и названия городов. Если в (табл 2) city = 'Москва', то в столбец "id (fk_1)" можно ввести только 1, если city = 'Рим', то только 3!? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2018, 18:58 |
|
||
|
проверка по двум и более столбцам при вводе данных в таблицу
|
|||
|---|---|---|---|
|
#18+
Андрей2707Поэтому подскажите можно ли что бы при вводе данных в (табл 2) FOREIGN KEY проверял не только данные из столбца "ID", но и названия городовДа, возможно. Просто делаете FK по 2 столбцам. Хотя так не делают, это нарушение какой-то-там нормальной формы. Если у вас в одной таблице названия городов и их ID, то в других таблицах указывают только ID, без названий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2018, 19:04 |
|
||
|
проверка по двум и более столбцам при вводе данных в таблицу
|
|||
|---|---|---|---|
|
#18+
Андрей2707, Код: sql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2018, 19:05 |
|
||
|
проверка по двум и более столбцам при вводе данных в таблицу
|
|||
|---|---|---|---|
|
#18+
Через foreign key -- нет. Ну и зачем нужно перманентное поле id во второй таблице, тоже не ясно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2018, 19:06 |
|
||
|
проверка по двум и более столбцам при вводе данных в таблицу
|
|||
|---|---|---|---|
|
#18+
alexeyvgДа, возможно. Просто делаете FK по 2 столбцам.FK по двум полям не позволит держать запись Москва + NULL во второй таблице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2018, 19:07 |
|
||
|
проверка по двум и более столбцам при вводе данных в таблицу
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей АлексеевичalexeyvgДа, возможно. Просто делаете FK по 2 столбцам.FK по двум полям не позволит держать запись Москва + NULL во второй таблице. наоборот позволит, проверка не срабатывает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2018, 19:14 |
|
||
|
проверка по двум и более столбцам при вводе данных в таблицу
|
|||
|---|---|---|---|
|
#18+
TaPaKГавриленко Сергей Алексеевичпропущено... FK по двум полям не позволит держать запись Москва + NULL во второй таблице. наоборот позволит, проверка не срабатываетКак выяснилось, да, позволит. В случае, если хотя бы одно из полей составного FK равно null, ничего не проверяется, т.е. можно в другие поля писать вообще все, что угодно. (Хотя есть маразматичный вариант делать дополнительно fk на каждое поле). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2018, 19:28 |
|
||
|
проверка по двум и более столбцам при вводе данных в таблицу
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей АлексеевичTaPaKпропущено... наоборот позволит, проверка не срабатываетКак выяснилось, да. В случае, если хотя бы одно из полей составного FK равно null, ничего не проверяется, т.е. можно в другие поля писать вообще все, что угодно. Хотя есть маразматичный вариант делать дополнительно fk на каждое поле. Возвращаясь к недавней теме троичной логики 21107702 , FK при проверке ведут себя так же, как и check constrint, трактуя unknown как допустимый результат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2018, 19:34 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=169&tid=1690494]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
30ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
27ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 308ms |

| 0 / 0 |
