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

Откуда:
Сообщений: 46
Почему при выполнение программно запроса "Insert into Zone VALUES (null,'279',N'АВГУР')" возникает ошибка:
"The INSERT statement conflicted with the FOREIGN KEY constraint "Client_Zone_FK1". The conflict occurred in database "tavl2", table "dbo.Client", column 'ClientId'."

при выполнении того же запроса напрямую, вручную из sms - ошибки не возникает. почему?
8 июн 11, 17:23    [10784862]     Ответить | Цитировать Сообщить модератору
 Re: котавасия  [new]
brans
Member

Откуда:
Сообщений: 46
хочу заметить, что данные корректны ClientId (279) присутствует в таблице "dbo.Client"
8 июн 11, 17:24    [10784878]     Ответить | Цитировать Сообщить модератору
 Re: котавасия  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
brans
Почему при выполнение программно запроса "Insert into Zone VALUES (null,'279',N'АВГУР')" возникает ошибка:
Это в профайлере такая команда?
brans
при выполнении того же запроса напрямую, вручную из sms - ошибки не возникает. почему?
А в студии что именно вы запускате?
8 июн 11, 17:25    [10784891]     Ответить | Цитировать Сообщить модератору
 Re: котавасия  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
И, вообще, поля в таблице при вставке надо явно перечислять.
8 июн 11, 17:26    [10784901]     Ответить | Цитировать Сообщить модератору
 Re: котавасия  [new]
brans
Member

Откуда:
Сообщений: 46
Перечислил поля явно, то же самое.

автор
Это в профайлере такая команда?

А в студии что именно вы запускает?



Это запрос, который я выполняю программно. И он вызывает ошибку. (Конфликт проверки номера клиента) Потом этот же запрос, я копирую и вставляю в SMS ("New query").
Там тот же запрос ошибки не вызывает. Мне не понятно почему и как такое возможно.


автор
И, вообще, поля в таблице при вставке надо явно перечислять.

Перечислил явно. То же самое.
8 июн 11, 18:43    [10785472]     Ответить | Цитировать Сообщить модератору
 Re: котавасия  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Вы не пересказывайте. Вы откройте профайлер, и посмотрите, какой запрос в каждом случае приходит на сервер.
8 июн 11, 18:44    [10785479]     Ответить | Цитировать Сообщить модератору
 Re: котавасия  [new]
brans
Member

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

программно - я имею виду. в коде программы C#. (через System.Data.SqlClient;)
8 июн 11, 18:45    [10785489]     Ответить | Цитировать Сообщить модератору
 Re: котавасия  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31949
brans
Перечислил поля явно, то же самое.

автор
Это в профайлере такая команда?

А в студии что именно вы запускает?



Это запрос, который я выполняю программно. И он вызывает ошибку. (Конфликт проверки номера клиента) Потом этот же запрос, я копирую и вставляю в SMS ("New query").
Там тот же запрос ошибки не вызывает. Мне не понятно почему и как такое возможно.
Посмотрите в профайлере, что реально выполняется из приложения. Наверняка там что то типа передачи 0 вместо null или выполнения 2 раза одного запроса.
8 июн 11, 18:45    [10785491]     Ответить | Цитировать Сообщить модератору
 Re: котавасия  [new]
brans
Member

Откуда:
Сообщений: 46
к сожалению профайлером пользоваться не умею. и база активная. постоянно поступает сотни запросов. рыться в логе проблематично
8 июн 11, 18:52    [10785520]     Ответить | Цитировать Сообщить модератору
 Re: котавасия  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
brans
к сожалению профайлером пользоваться не умею.
Пора научиться, значит.
brans
и база активная. постоянно поступает сотни запросов. рыться в логе проблематично
В профайлере есть фильтры.
8 июн 11, 18:53    [10785524]     Ответить | Цитировать Сообщить модератору
 Re: котавасия  [new]
brans
Member

Откуда:
Сообщений: 46
Гавриленко Сергей Алексеевич,

я запуская профайлер, начинаю трейс, выполняю запрос, в тексте событий лога слова "insert" вообще не находится. :(
8 июн 11, 19:16    [10785616]     Ответить | Цитировать Сообщить модератору
 Re: котавасия  [new]
brans
Member

Откуда:
Сообщений: 46
brans,
с другими запросами ситуация такая же странная.

Как правильно именовать таблице во внешнем программном запросе? в Каком формате? достаточно просто имени таблицы в запросе?
8 июн 11, 19:21    [10785629]     Ответить | Цитировать Сообщить модератору
 Re: котавасия  [new]
наутилус
Member

Откуда: UA
Сообщений: 1263
brans
Почему при выполнение программно запроса "Insert into Zone VALUES (null,'279',N'АВГУР')" возникает ошибка:
"The INSERT statement conflicted with the FOREIGN KEY constraint "Client_Zone_FK1". The conflict occurred in database "tavl2", table "dbo.Client", column 'ClientId'."

при выполнении того же запроса напрямую, вручную из sms - ошибки не возникает. почему?

а почему число в как строка?
8 июн 11, 21:06    [10786008]     Ответить | Цитировать Сообщить модератору
 Re: котавасия  [new]
AlexandrPlus
Member

Откуда:
Сообщений: 7887
так может быть в ограничениях FOREIGN KEY не может быть null?
9 июн 11, 06:56    [10786903]     Ответить | Цитировать Сообщить модератору
 Re: котавасия  [new]
Genniy
Member

Откуда:
Сообщений: 141
brans,
Уберите кавычки.
9 июн 11, 09:12    [10787157]     Ответить | Цитировать Сообщить модератору
 Re: котавасия  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
AlexandrPlus
так может быть в ограничениях FOREIGN KEY не может быть null?
FOREIGN KEY спокойно реагирует на NULL.
Значение NULL может быть недопутимым для поля таблицы.
Но в этом случае сообщение другое.
9 июн 11, 11:04    [10787864]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить