テーブルの主キーとして ID 列を使用しています。
場合によっては、新しい行を挿入する前に主キーを操作する必要があります。
たとえば、Oracle では : を使用select <sequence_name>.nextval into <variable> from dual
しており、sp の実行中に同じ ID を持つ行を誰も挿入しないと確信していました。
SQL Server に関しては、現在の ID 値を読み取ることができ、それはインクリメントされますが、行を挿入せずにインクリメントする方法はありません。
更新: 問題は、行を挿入する前に SQL Server で ID (ID 列として) を操作し、ストアド プロシージャの最後で ID が一意であることを確認するにはどうすればよいかということです。
更新: HierarchyId 列を含むテーブルがあります。私の場合、階層の最初のレベルを形成する方法は、indentity 列に従って、hierarchyId 列を挿入することです。それが私が今それをやった方法です:
begin transaction
insert into [dbo].[Group](GroupTypeId,CompanyOwnerId,GroupHierarchyId)
values(@GroupTypeId,@HeaderCompanyId,null)
update [dbo].[Group]
set GroupHierarcyId=hierarchyid::GetRoot().GetDescendant(cast ('/'+cast(@NewGroupId as varchar)+'/' as hierarchyid),null)
where GroupId=scope_identity()
commit