powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Не создается Foreign Key
11 сообщений из 11, страница 1 из 1
Не создается Foreign Key
    #38726882
Scend
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть две таблицы уже заполненные данными.
Основная таблица Table1, ID - формат GUIDID.
Таблица Table2, в которой в поле IDTable1 находятся GUIDID. Пытаюсь связать посредством Foreign Key эти таблицы по этим полям.
Т.е. выбирая Table1.ID, мы должны получить во второй Таблице Table2.IDTable1.
Код: sql
1.
2.
3.
ALTER TABLE Table2
ADD CONSTRAINT FK_Table2_Table1 FOREIGN KEY (IDTable1)
REFERENCES Table1 (ID)


Средствами SQL редакторов тоже пробовал.
Выдает ошибку:
Код: sql
1.
Конфликт инструкции ALTER TABLE с ограничением FOREIGN KEY " FK_Table2_Table1". Конфликт произошел в базе данных "MYDB", таблица "dbo.Table1", column 'ID'.


Как можно создать данный FOREIGN KEY?
...
Рейтинг: 0 / 0
Не создается Foreign Key
    #38726888
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScendЕсть две таблицы уже заполненные данными.
Основная таблица Table1, ID - формат GUIDID.
Таблица Table2, в которой в поле IDTable1 находятся GUIDID. Пытаюсь связать посредством Foreign Key эти таблицы по этим полям.
Т.е. выбирая Table1.ID, мы должны получить во второй Таблице Table2.IDTable1.

так не работает FK, вы что хотите получить?
...
Рейтинг: 0 / 0
Не создается Foreign Key
    #38726892
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScendКак можно создать данный FOREIGN KEY?
Сначала привести данные в порядок
Сервер за вас не удалит то, что нарушает FK
...
Рейтинг: 0 / 0
Не создается Foreign Key
    #38726897
Scend
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Glory, подскажите, как проверить, что данные не в порядке и привести их в порядок?
...
Рейтинг: 0 / 0
Не создается Foreign Key
    #38726899
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для начала приведите здесь скрипты ваших таблиц
...
Рейтинг: 0 / 0
Не создается Foreign Key
    #38726903
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScendGlory, подскажите, как проверить, что данные не в порядке и привести их в порядок?
Найти такие значения Table2.IDTable1, которых нет в Table1.ID
И либо добавить их в Table1, либо удалить из Table2, либо поменять в Table2 на те, что есть в Table1
...
Рейтинг: 0 / 0
Не создается Foreign Key
    #38728123
Scend
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GloryНайти такие значения Table2.IDTable1, которых нет в Table1.ID
И либо добавить их в Table1, либо удалить из Table2, либо поменять в Table2 на те, что есть в Table1
Glory, спасибо, помогло.
А можно каким-нибудь хитрим способом, не трогая данные в Table1,Table2 создать Foreign Key?
Или только можно создать Foreign Key приведя данные в соответствие?
...
Рейтинг: 0 / 0
Не создается Foreign Key
    #38728130
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, разложите себе грабли на будущее с помощью WITH NOCHECK.
...
Рейтинг: 0 / 0
Не создается Foreign Key
    #38728212
o-o
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
o-o
Гость
может, вам оно и не надо, именно Foreign Key?
вот например эта фраза:
ScendПытаюсь связать посредством Foreign Key эти таблицы по этим полям.
Т.е. выбирая Table1.ID, мы должны получить во второй Таблице Table2.IDTable1.


как бы по идее-то наоборот, в поле Table2.IDTable1 должны попадать только те значения,
что имеютя в Table1.ID, и за этим и "следит" Foreign Key.
а в Table1.ID могут быть какие угодно (уникальные) значения,
совсем они не обязаны находиться еще и в Table2.IDTable1.

ScendА можно каким-нибудь хитрим способом, не трогая данные в Table1,Table2 создать Foreign Key?
Или только можно создать Foreign Key приведя данные в соответствие?

если надо иметь разобщенные данные, то зачем заводить Foreign Key?
и если вам просто надо соединять 2 таблицы по полю ID-IDTable1, то и без Foreign Key соединится:
Data from two related tables can be combined even if no PRIMARY KEY or FOREIGN KEY constraints are defined between the tables.

WITH NOCHECK хорош, если, например, надо заставить студию диаграммы нарисовать со связями,
т.е. совсем не по назначению использовать Foreign Key.

для завершения занудства приведу тут, зачем нужен Foreign Key:

Although the primary purpose of a FOREIGN KEY constraint is to control the data that can be stored in the foreign key table , it also controls changes to data in the primary key table. For example, if the row for a publisher is deleted from the publishers table, and the publisher's ID is used for books in the titles table, the relational integrity between the two tables is broken; the deleted publisher's books are orphaned in the titles table without a link to the data in the publishers table. A FOREIGN KEY constraint prevents this situation. The constraint enforces referential integrity by ensuring that changes cannot be made to data in the primary key table if those changes invalidate the link to data in the foreign key table . If an attempt is made to delete the row in a primary key table or to change a primary key value, the action will fail if the deleted or changed primary key value corresponds to a value in the FOREIGN KEY constraint of another table.
...
Рейтинг: 0 / 0
Не создается Foreign Key
    #38728271
Scend
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Foreign Key нужен для соединения этих двух таблиц в специфическом софте, в котором только по Foreign Key можно эти таблицы связать. Исторически сложилось, что данные там %-ов 10 разношерстные, как раз мешающие связи по Foreign Key. Но, эти 10% желательно тоже оставить, т.к. они также играют свою роль.
По хорошему конечно хотелось бы привести таблицы к нормализованному виду, но исторические данные мешают этому, т.к. являются важными в данном конкретном случае.
...
Рейтинг: 0 / 0
Не создается Foreign Key
    #38728294
Фотография Shakill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScendForeign Key нужен для соединения этих двух таблиц в специфическом софте, в котором только по Foreign Key можно эти таблицы связать. Исторически сложилось, что данные там %-ов 10 разношерстные, как раз мешающие связи по Foreign Key. Но, эти 10% желательно тоже оставить, т.к. они также играют свою роль.
По хорошему конечно хотелось бы привести таблицы к нормализованному виду, но исторические данные мешают этому, т.к. являются важными в данном конкретном случае.

наблюдается противоречение: если софт опирается на foreign key при своей работе, то в его таблицах вообще не имеет смысл держать важные рассогласованные данные, т.к. этот софт не смог бы с ними работать даже если каким-то чудом вам удалось бы их туда поместить. выносите такие данные в отдельную таблицу
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Не создается Foreign Key
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]