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

Откуда: МСК
Сообщений: 49
ALTER TABLE dbo.NAME DROP CONSTRAINT FK_NAME_FS

-- Вставка данных в таблицу dbo.NAME

DECLARE @name TABLE (name_id int, NAME_DES nvarchar(80),NAME_DES_ENG nvarchar(80),CNTR_ID int,F_ID int, SITE_ID int)
 INSERT INTO @name
 SELECT *FROM  OPENQUERY (banana,'select * from parfum_r.dbo.tblname')
 

SET IDENTITY_INSERT dbo.NAME ON
 INSERT INTO  dbo.NAME
 SELECT * FROM @name n where n.name_id not in (select dbo.TBLNAME.name_id from dbo.NAME)
SET IDENTITY_INSERT dbo.NAME OFF


-- Создание ограничений для таблицы dbo.TBLNAME

ALTER TABLE dbo.NAME WITH NOCHECK ADD CONSTRAINT FK_NAME_FS FOREIGN KEY (F_ID) REFERENCES dbo.FS(F_ID) ON DELETE NO ACTION ON UPDATE NO ACTION
Получаю ругань
Msg 8101, Level 16, State 1, Line 16
An explicit value for the identity column in table 'dbo.TBLNAME' can only be specified when a column list is used and IDENTITY_INSERT is ON.


ALTER TABLE dbo.TBLNAME DROP CONSTRAINT FK_TBLNAME_FS

-- Вставка данных в таблицу dbo.TBLNAME

SET IDENTITY_INSERT dbo.TBLNAME ON
INSERT dbo.NAME(NAME_ID, NAME_DES, NAME_DES_ENG, CNTR_ID, F_ID, SITE_ID) VALUES (656, N'ORANGE ', N' ОРАНЖ ', 2, 20, 0)
INSERT dbo.NAME(NAME_ID, NAME_DES, NAME_DES_ENG, CNTR_ID, F_ID, SITE_ID) VALUES (657, N' COLA', N' КОЛА', 3, 23, 0)
INSERT dbo.NAME(NAME_ID, NAME_DES, NAME_DES_ENG, CNTR_ID, F_ID, SITE_ID) VALUES (658, N'AQUA ', N'АКВА', 5, 178, 0)
INSERT dbo.NAME(NAME_ID, NAME_DES, NAME_DES_ENG, CNTR_ID, F_ID, SITE_ID) VALUES (659, N'ADIDADS', N'АДИДАС', 5, 178, 0)
SET IDENTITY_INSERT dbo.TBLNAME OFF


-- Создание ограничений для таблицы dbo.TBLNAME

ALTER TABLE dbo.TBLNAME WITH NOCHECK ADD CONSTRAINT FK_NAME_FS FOREIGN KEY (F_ID) REFERENCES dbo.FS(F_ID) ON DELETE NO ACTION ON UPDATE NO ACTION

А такой прокатывает, можно что то с первым вариантом сделать, второй вариант не очент подходит
21 июл 09, 12:12    [7439436]     Ответить | Цитировать Сообщить модератору
 Re: Не могу понять в чем разница в двух запросах, как переделать первый вариант?  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Paas
Получаю ругань
Msg 8101, Level 16, State 1, Line 16
An explicit value for the identity column in table 'dbo.TBLNAME' can only be specified
when a column list is used and IDENTITY_INSERT is ON.
Выполнить выделенное пробовали?
21 июл 09, 12:15    [7439451]     Ответить | Цитировать Сообщить модератору
 Re: Не могу понять в чем разница в двух запросах, как переделать первый вариант?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36803
Второй вариант единственный.
21 июл 09, 12:15    [7439454]     Ответить | Цитировать Сообщить модератору
 Re: Не могу понять в чем разница в двух запросах, как переделать первый вариант?  [new]
Supra93
Member

Откуда:
Сообщений: 8174
автор
An explicit value for the identity column in table 'dbo.TBLNAME' can only be specified when a column list is used and IDENTITY_INSERT is ON.
21 июл 09, 12:16    [7439455]     Ответить | Цитировать Сообщить модератору
 Re: Не могу понять в чем разница в двух запросах, как переделать первый вариант?  [new]
Горилла с Нижнего Тагила
Member

Откуда:
Сообщений: 407
Paas,
наверное и в первом случае нужно использовать список столбцов: "only...when a column list is used "
INSERT dbo.NAME(NAME_ID, NAME_DES, NAME_DES_ENG, CNTR_ID, F_ID, SITE_ID) SELECT 
name_id, NAME_DES ,NAME_DES_ENG ,CNTR_ID, F_ID, SITE_ID FROM @name n where n.name_id not in (select dbo.NAME.name_id from dbo.NAME)
21 июл 09, 12:19    [7439498]     Ответить | Цитировать Сообщить модератору
 Re: Не могу понять в чем разница в двух запросах, как переделать первый вариант?  [new]
sasharzv
Member

Откуда:
Сообщений: 13
Paas,
В INSERT укажи названия атрибутов, так же и в SELECT вместо * надо указать названия атрибутов.
21 июл 09, 12:26    [7439539]     Ответить | Цитировать Сообщить модератору
 Re: Не могу понять в чем разница в двух запросах, как переделать первый вариант?  [new]
Paas
Member

Откуда: МСК
Сообщений: 49
не думал, что есть принципиальная разница с перечислением параметров или нет, пашет, благодарю
21 июл 09, 12:43    [7439661]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить