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

Откуда: РБ
Сообщений: 950
собственно добавляю данные в таблицу получаю id вставленной строки и возвращаю этот id + rowversion,
но при такой конструкции select cast(scope_identity() as int) ничего не выдает,
это из-за того что операция обернута в транзакцию? или я не так что делаю?
begin
set nocount on
--
declare @id int
--
begin try
	begin transaction
	insert into general.org(...)
	values(...)
	--
	set @id = (select cast(scope_identity() as int))
	select @id, o.rwv -- rowversion
	from general.org as o
	where o.id_org = @id
	--
	commit transaction
end try
begin catch
	rollback transaction
	declare @error varchar(1000)
	set @error = 'Данные не были сохранены.' + cast(isnull(@id,0) as varchar)
	raiserror(@error, 16, 1)
end catch
--
end;
26 май 11, 11:38    [10711740]     Ответить | Цитировать Сообщить модератору
 Re: помогите найти ошибку в операции insert, select scope_identity()  [new]
koJIo6ok
Member

Откуда: РБ
Сообщений: 950
select @@VERSION
Microsoft SQL Server 2008 (SP2) - 10.0.4285.0 (Intel X86)
Apr 28 2011 17:59:01
Copyright (c) 1988-2008 Microsoft Corporation
Enterprise Edition on Windows NT 5.2 <X86> (Build 3790: Service Pack 2)
26 май 11, 11:39    [10711751]     Ответить | Цитировать Сообщить модератору
 Re: помогите найти ошибку в операции insert, select scope_identity()  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Это наверное потому, что между "insert into" и "set @id = " есть еще какие-то команды.
26 май 11, 11:41    [10711772]     Ответить | Цитировать Сообщить модератору
 Re: помогите найти ошибку в операции insert, select scope_identity()  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
koJIo6ok,

покажите структуру general.org с триггерами.
26 май 11, 11:46    [10711806]     Ответить | Цитировать Сообщить модератору
 Re: помогите найти ошибку в операции insert, select scope_identity()  [new]
invm
Member

Откуда: Москва
Сообщений: 9845
koJIo6ok,

insert into general.org(...)
        output
          inserted.id, inserted.rwv
	values(...)
?
26 май 11, 11:54    [10711878]     Ответить | Цитировать Сообщить модератору
 Re: помогите найти ошибку в операции insert, select scope_identity()  [new]
koJIo6ok
Member

Откуда: РБ
Сообщений: 950
да, это я подменил сообщение об ошибке своим и не видел что он мне пишет (
поменял структуру таблиц а индексы уникальные не изменил вот вставка и не шла
скажите, был индекс
Constraint UQ_NazvOrg unique nonclustered(nazv_org) on [tr_data],
теперь поле nazv_org стало nazv_org varchar(100) null
при counterpart_type = 1 (юридическое лицо) nazv_org = @nazv_org,
а при counterpart_type = 2 (физическое лицо) nazv_org = Null
можно как-то индекс переписать что бы сохранилась уникальность nazv_org?
и объясните пожалуйста в чем разница между и как правильно делать
invm
insert into general.org(...)
output
inserted.id, inserted.rwv
values(...)

и
insert into general.org(...)
values(...)
--
set @id = (select cast(scope_identity() as int))
select @id, o.rwv -- rowversion
from general.org as o
where o.id_org = @id
--
26 май 11, 12:31    [10712196]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить