База - MS SQL 2000
Есть 2 таблицы:
- Код: Выделить всё
CREATE TABLE [CalendarWatcherMainTable] (
[ID] [bigint] IDENTITY (1, 1) NOT NULL ,
[ActionComment] [text] COLLATE Cyrillic_General_BIN NOT NULL CONSTRAINT [DF_CalendarWatcherMainTable_ActionComment] DEFAULT (''),
CONSTRAINT [PK_CalendarWatcherMainTable] PRIMARY KEY CLUSTERED
(
[ID]
) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
CREATE TABLE [CalendarWatcherSubTable] (
[ID] [bigint] IDENTITY (1, 1) NOT NULL ,
[ParentID] [bigint] NOT NULL CONSTRAINT [DF_CalendarWatcherSubTable_ParentID] DEFAULT (0),
[CodeType] [int] NOT NULL CONSTRAINT [DF_CalendarWatcherSubTable_CodeType] DEFAULT (0),
[Code] [varchar] (20) COLLATE Cyrillic_General_BIN NOT NULL CONSTRAINT [DF_CalendarWatcherSubTable_Code] DEFAULT ('')
) ON [PRIMARY]
Соответственно, ParentID 2-ой таблицы - это значение ID первой.
Теперь задача - вставить одну строку в 1-ю и несколько строк во 2-ю, при этом их ParentID должен совпасть c ID первой таблицы, который просто автоматически увеличивается.
Как после операции INSERT получить присвоенный ID?
Если бы у меня было односеансовое предложение, то просто - последняя строка.
Беда в том, что одновременно может ломиться несколько клиентов, и не факт, что в между инсертом и селектом не затесается еще один инсерт.
Как быть?