[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: The INSERT statement conflicted with the FOREIGN K
Игорь_Vasinsky
речь о TSQL (mssql)
Есть динамический sql вида


Псевдокод, чтоб картина понятней была
declare @sql varchar(max)
declare @table varchar(10) = 'mytable'
declare @input bigint = 10

set @sql = 'insert into ' + @table + ' (input) values ('+cast(@input as varchar(5))+')';

exec sp_executesql @sql


Тут cast(@input as varchar(5)) - привёл к строке - т.к. иначе я бы не смог склеить сам запрос


и в данном случае input - внешний ключ - указывающий на другую таблицу, при этом там это поле формата bigint


так как типы данных разные, хотя внешне данные схожи получаю ошибку


Цитата
The INSERT statement conflicted with the FOREIGN KEY constraint "fk_anytable_input". The conflict occurred in database "db", table "anytable", column 'input'.




как победить.. понятия не имею..

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
kaww
вероятно, все дело в том что в поле, которое является внешним ключем, хочешь записать значение, которого нет в таблице на которую это самое поле ссылается
Игорь_Vasinsky
есть, я же описал - внешне выглядят одинакого - например 115 - но в одной таблице это bigint, а при вставке в другую varchar - т.е. '115'


дело оказалось в другом месте, выше перепутал тип у другой переменной
и использовал nvarchar для sql (в верхнем коде указал varchar)

а так использовал varchar для @sql и типы приводить не пришлось + выполнял запрос не

exec sp_executesql @sql

а

exec @sql


и усё нормально вроде)

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.