Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Расшифруйте пожалуйста следующий код  [new]
troublet
Member [заблокирован]

Откуда:
Сообщений: 27
Пытаюсь вставить запись в таблицу LexOSSpr_h, выдаёт мне ошибку на некластерный ключик, иду смотреть создание таблички - вижу следующий код:
GO
ALTER TABLE [dbo].[LexOSSpr_h]  WITH CHECK ADD  CONSTRAINT [FK_LexOSSpr_UniAnalit_h] FOREIGN KEY([vcode])
REFERENCES [dbo].[UniAnalit_H] ([VCode])
GO

В боле я читал что таким образом создаются форенг ключи, но как понять что имел ввиду человек написавший это?
Очевидно я не совсем чётко понимаю механизм форенг кей, особенно при обеспечении ссылочной целостности, прошу помощи по этому, разъясните пожалуйста на этом примере
19 ноя 15, 09:44    [18439147]     Ответить | Цитировать Сообщить модератору
 Re: Расшифруйте пожалуйста следующий код  [new]
troublet
Member [заблокирован]

Откуда:
Сообщений: 27
Правильно ли я понимаю, что прежде чем вставлять записи в табличку LexOsSpr_h, я сначала должен вставить в табличку unianalit_h ?
19 ноя 15, 09:47    [18439163]     Ответить | Цитировать Сообщить модератору
 Re: Расшифруйте пожалуйста следующий код  [new]
Glory
Member

Откуда:
Сообщений: 104760
troublet
В боле я читал что таким образом создаются форенг ключи, но как понять что имел ввиду человек написавший это?

Наверное он имел ввиду .... создание форейн ключа

troublet
Очевидно я не совсем чётко понимаю механизм форенг кей, особенно при обеспечении ссылочной целостности, прошу помощи по этому, разъясните пожалуйста на этом примере

На каком этом ? Это команда создания форейн ключа. Команду эту выполняют для реализации вашей схемы данных. Схему данных эту вы споздали исходя из ТЗ. ТЗ это вы создали после проектирования. Проектирование вы начали после анализа всех процессов.

troublet
Правильно ли я понимаю, что прежде чем вставлять записи в табличку LexOsSpr_h, я сначала должен вставить в табличку unianalit_h ?

Смотря на то, что именно вы собрались вставлять в LexOsSpr_h
19 ноя 15, 09:52    [18439188]     Ответить | Цитировать Сообщить модератору
 Re: Расшифруйте пожалуйста следующий код  [new]
Макбет
Member

Откуда:
Сообщений: 72
troublet,

добавляем внешний ключ для поля [LexOSSpr_h].[vcode]
т.е. любое значение этого поля обязано быть водной из строк таблицы [UniAnalit_H] в поле [VCode], естественно, что [VCode] является PRIMARY KEY или UNIQUE
WITH CHECK - добавлять внешний ключ с проверкой, т.е. все существующие записи будут проверены на соответствие ключу
можно поставить WITH NOCHECK, без проверки
означает, что правило вступает в силу с текущего момента, нужно когда проверку уже провели или старые данные оставляем как есть
19 ноя 15, 09:53    [18439191]     Ответить | Цитировать Сообщить модератору
 Re: Расшифруйте пожалуйста следующий код  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
troublet
Пытаюсь вставить запись в таблицу LexOSSpr_h, выдаёт мне ошибку на некластерный ключик, иду смотреть создание таблички - вижу следующий код:
GO
ALTER TABLE [dbo].[LexOSSpr_h]  WITH CHECK ADD  CONSTRAINT [FK_LexOSSpr_UniAnalit_h] FOREIGN KEY([vcode])
REFERENCES [dbo].[UniAnalit_H] ([VCode])
GO

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


То есть вы делаете некий секретный INSERT в таблицу с тайной структурой и получаете ошибку от сервера
"Я выдаю ошибку: некластерный ключик"
?
19 ноя 15, 10:00    [18439216]     Ответить | Цитировать Сообщить модератору
 Re: Расшифруйте пожалуйста следующий код  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31444
troublet
Правильно ли я понимаю, что прежде чем вставлять записи в табличку LexOsSpr_h, я сначала должен вставить в табличку unianalit_h ?
Лучше сказать так: Что бы вставка записей в LexOsSpr_h, произошла успешно, нужно, что бы к этому моменту в таблице unianalit_h существовала запись с соответствующем значением поля VCode.

Ну и если такой записи там нет, то да, перед вставкой в LexOsSpr_h нужно сделать правильную запись в unianalit_h.
19 ноя 15, 10:43    [18439467]     Ответить | Цитировать Сообщить модератору
 Re: Расшифруйте пожалуйста следующий код  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
Макбет
естественно, что [VCode] является PRIMARY KEY или UNIQUE
Необязательно.
19 ноя 15, 10:43    [18439470]     Ответить | Цитировать Сообщить модератору
 Re: Расшифруйте пожалуйста следующий код  [new]
troublet
Member [заблокирован]

Откуда:
Сообщений: 27
Макбет,

Спасибо большое, всё очень дохотчиво
19 ноя 15, 10:43    [18439474]     Ответить | Цитировать Сообщить модератору
 Re: Расшифруйте пожалуйста следующий код  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
во ошпареный пациент однако.....
19 ноя 15, 10:54    [18439542]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить