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

Откуда:
Сообщений: 5
Имеется 2 таблицы. id - в обоих случаях автоинкрементный.
Первая:
id|username|password

Вторая:
id|roleid|allowid

Необходимо создать запрос, чтобы была добавлена запись в первую таблицу, после чего берется id ей присвоенный и происходит вставка новой строки во вторую таблицу, где allowid будет равно id из первой таблицы.
Как понимаю необходимо использовать SCOPE_IDENTITY()? Подскажите синтаксис, пожалуйста..
18 окт 11, 15:01    [11459868]     Ответить | Цитировать Сообщить модератору
 Re: Вставка id(автоинкремент) из одной таблицы в другую  [new]
Alexandr Kr.
Member

Откуда: Украина, Харьков
Сообщений: 165
allie,
Чтото типа такого

create table #tmp1(id int identity(0,1) not null,
username varchar(256),
password nvarchar(256))

create table #tmp2(id int identity(0,1) not null,
roleid varchar(256),
allowid int)

insert into #tmp1(username,password)
OUTPUT inserted.id INTO #tmp2(allowid)
values ('Ivan','P1'),
('Petr','P2'),
('Vasja','P3')

select * from #tmp1
select * from #tmp2

drop table #tmp1
drop table #tmp2
18 окт 11, 15:07    [11459959]     Ответить | Цитировать Сообщить модератору
 Re: Вставка id(автоинкремент) из одной таблицы в другую  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
allie,

а если со scope_identity, то я бы сделал типа такой хранимки

create proc UserCreateWithDefaultRole
	@username varchar(100),
	@password varchar(100)
as

insert into users(username,password)
values (@username,@password)

declare @userID int, @defaultRoleID int

set @userID = scope_identity()
set @defaultRoleID = 1

insert into userRoles(roleid, allowid)
values (@defaultRoleID, @userID)
18 окт 11, 15:13    [11460022]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить