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

Откуда:
Сообщений: 194
всем привет. есть две таблицы
CREATE TABLE dbo.Requests(
  Id INT IDENTITY,
  RequestId INT NOT NULL,  
  Created DATETIME NOT NULL
  CONSTRAINT PK_Requests PRIMARY KEY (Id)
) ON [PRIMARY]
GO

CREATE TABLE dbo.HistoryRequests(
  Id INT IDENTITY,
  RequestId INT NOT NULL,
  Edited DATETIME NOT NULL
  CONSTRAINT [PK_dbo.HistoryRequests] PRIMARY KEY (Id),
  CONSTRAINT [FK_dbo.HistoryRequests_dbo.Requests_RequestId] FOREIGN KEY (RequestId) REFERENCES dbo.Requests (RequestId)
) ON [PRIMARY]
GO

RequestId - это будет номер(1,2,3).как организовать добавление записи в главную и второстепенную таблицу для нескольких пользователей в таком случае? сервер MSSQL 2008 Express.пока это работает следующим образом: получаю пользовательский ввод данных, открываю транзакцию получаю следующий номер так: Select max(RequestId) from Requests, делаю инсерт впервую таблицу, делаю инсерт во вторую таблицу, при отсутствии ошибок делаю комит. подскажите как сделать правильней для многопользовательского ввода
12 дек 14, 14:25    [16988832]     Ответить | Цитировать Сообщить модератору
 Re: уникальный идентификатор и две таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104751
Сделать RequestId тоже IDENTITY
12 дек 14, 14:28    [16988846]     Ответить | Цитировать Сообщить модератору
 Re: уникальный идентификатор и две таблицы  [new]
bald56rus
Member

Откуда:
Сообщений: 194
и тут я прихожу к моменту что может быть "дырка".ну может быть.как тогда будет происходить в этом случае запись?инсерт в первую таблицу?получить ид последней вставленной записи, инсерт во вторую таблицу, комит!?я правильно понимаю?
12 дек 14, 14:32    [16988869]     Ответить | Цитировать Сообщить модератору
 Re: уникальный идентификатор и две таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104751
bald56rus
и тут я прихожу к моменту что может быть "дырка".ну может быть.как тогда будет происходить в этом случае запись?

Ну будет дырка и что ?
У вас по ТЗ должна быть обеспечена сквозная непрерывная нумерация записе й что ли ?

bald56rus
.как тогда будет происходить в этом случае запись?инсерт в первую таблицу?получить ид последней вставленной записи, инсерт во вторую таблицу, комит!?я правильно понимаю?

Не понял.
Добавляете записи в Requests и Получаете их RequestId
Которые потом используете для добавления в HistoryRequest
12 дек 14, 14:34    [16988890]     Ответить | Цитировать Сообщить модератору
 Re: уникальный идентификатор и две таблицы  [new]
Konst_One
Member

Откуда:
Сообщений: 11625
не брать через Max() , а получать через OUTPUT вставленные идентификаторы в главной таблице и использовать их при вставке в подчинённую
12 дек 14, 14:35    [16988893]     Ответить | Цитировать Сообщить модератору
 Re: уникальный идентификатор и две таблицы  [new]
LexusR
Member

Откуда: Novosibirsk
Сообщений: 1887
declare @Requests table(id int not null primary key identity(1,1),name varchar(10))
declare @HistoryRequests table(id int not null primary key identity(1,1),RequestID int)
declare @NewIDs table (id int)

insert into @Requests(name) output inserted.id into @NewIDs values('one'),('two')
insert into @HistoryRequests(RequestID) select ID from  @NewIDs

select * from @Requests
select * from @HistoryRequests
12 дек 14, 14:52    [16989048]     Ответить | Цитировать Сообщить модератору
 Re: уникальный идентификатор и две таблицы  [new]
bald56rus
Member

Откуда:
Сообщений: 194
понял, всем спасибо
12 дек 14, 14:54    [16989059]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить