[mssql] Можно ли вставить значение в поле IDENTITY ?

Alena_08_11

появилось потребность вставить несколько значений в поле IDENTITY, можно ли это сделать ?
и если можно - то как ?

fedya

SET IDENTITY_INSERT [ database. [ owner. ] ] { table } { ON | OFF }

Alena_08_11

пишу:

use db;
SET IDENTITY_INSERT {tbl} {ON};
insert into tbl values (-10,'blah 1','');
insert into tbl values (-20,'blah 2','');
SET IDENTITY_INSERT {tbl} {OFF};

а мне в ответ
[Microsoft][ODBC SQL Server Driver]Syntax error or access violation
В моём случае это Syntax Error или Access Violation ?
И что нада сделать в том или в другом случае ?
(itity поле это то в которое я пытаюсь сунуть -10 и -20)

fedya

к примеру aaa - имя таблицы
SET IDENTITY_INSERT aaa ON
insert into aaa values (-10,'blah 1','')
insert into aaa values (-20,'blah 2','')
SET IDENTITY_INSERT aaa OFF
Только я не знаю как поведет себя MSSQL когда ты попытаешься отрицательные значения запихнуть в itity поле

Alena_08_11

не канает почему то
пишет
An explicit value for the itity column in table 'aaa' can only be specified when a column list is used and IDENTITY_INSERT is ON.
и с положительными значениями и с отрицательными
....
что такое column list и как его можно to use ?

Dasar

в insert-е после имени таблицы укажи имена колонок

Alena_08_11

не понял как это ? поподробнее пожалуйста.
В общем есть таблица

use db;
create table aaa
(
id int IDENTITY PRIMARY KEY,
field1 varchar(32
field2 varchar(32)
);

как мне в неё вставить строку типа (-10,' blah ', 'blah') ?

Andr163

insert into aaa (id, field1, field2) values (-10, 'blah', 'blah');

Varvara2002

SET IDENTITY_INSERT aaa ON
insert into aaa (id, field1, field2) values (-10, 'blah', 'blah');
SET IDENTITY_INSERT aaa OFF
Ты чем пользуешься?
Я запустил SQL Query Analyzer.
При попытке сделать
insert into aaa (id, field1, field2) values (-10, 'blah', 'blah');
он ругается и говорит, что надо сделать .
(Server: Msg 544, Level 16, State 1, Line 1
Cannot insert explicit value for itity column in table 'aaa' when IDENTITY_INSERT is set to OFF.)

anton7805

попробуй так :
SET IDENTITY_INSERT aaa ON
GO
insert into aaa (id, field1, field2) values (-10, 'blah', 'blah')
SET IDENTITY_INSERT aaa OFF
GO

Alena_08_11

Спасибо, получилось
Только вот непонятно чем запись
insert into aaa (id, field1, field2) values (-10, 'blah', 'blah')
в данном случае принципиально отличаеццо от
insert into aaa values (-10, 'blah', 'blah')
и почему с 1-й работает а со 2-й нет

anton7805

заморочки t - sql не всегда очевидны и понятны, поэтому надо всегда юзать хелп, когда очевидное решение не является верным

Alena_08_11

во
а где этот хелп то кстате ?
в Sql query analizer'е при выборе чего либо из меню хелп ничего не происходит ...

bastii

Shift-F1 пробовал? Хелп ставится с SQL Server, поищи Books Online.

pitrik2

Только вот непонятно чем запись
insert into aaa (id, field1, field2) values (-10, 'blah', 'blah')
в данном случае принципиально отличаеццо от
insert into aaa values (-10, 'blah', 'blah')
и почему с 1-й работает а со 2-й нет
я так понимаю что вторая запись неверна в принципе
потмоу как верна вот такая запись:
insert into aaa values ('blah', 'blah')
можешь проверить
тойсть тама как будто 2 столбца
это сделано специально и очень логично

anton7805

это было б логично , если б itity_insert is OFF ,а так не совсем логично

pitrik2

ну просто он не рюхает такой ситуации, что какая то там опция включена
ничего страшного
обычно все СУБД не блещут юзабильностью
Оставить комментарий
Имя или ник:
Комментарий: