2013-08-17 4 views
0

У меня есть две таблицы с поля, как показано ниже: -Вставка данных из одной таблицы в другую в SQL

tbl_emp -> идентификатор (автоматического генерирования, автоматическое приращение, первичный ключ), имя, DOB tbl_login - -> id (ссылается на id в tbl_emp, первичный ключ), пароль

У меня есть веб-форма, которая читает имя, пароль и дату рождения (dob) и кнопку отправки. При нажатии кнопки «Отправить» данные вставляются в первую таблицу, а также во вторую таблицу. Было бы легко вставить данные во второй столбец, если бы у меня был способ получить доступ к полю «id» из первой таблицы.

Запрос у меня есть: -

insert into tbl_emp (name,dob) values(@name, @dob); 
insert into tbl_login (id,password) values((select id from tbl_emp where id=(select id from tbl_emp where id=id)), @password) 

Проблема, с которой я сталкиваюсь с вышеупомянутой студенткой является:

Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression. 
The statement has been terminated. 
+0

Hay , как использовать эту вставку в значения tbl_login (id, password) ((выберите MAX (id) из tbl_emp, где name = @ name AND dob = @ dob), @p assword) –

+0

@Thiha Проблема с запросом, который вы сказали, заключается в том, что могут быть (могут быть) разные люди, которые могут иметь одно и то же имя и одну и ту же дову. – user2625672

+0

yep правильный. Таким образом, вы можете использовать First INSERT, затем SELECT (id), затем INSERT. На основе MSSQL, прежде чем ваша первая транзакция будет завершена, будет зафиксирована блокировка чтения или запись. –

ответ

0

Вы можете использовать SCOPE_IDENTIY функции:

insert into tbl_emp (name,dob) values(@name, @dob); 

insert into tbl_login (id,password) 
select id, @password 
from tbl_emp 
where id = SCOPE_IDENTITY(); 
+0

Позвольте мне попробовать. Спасибо за ссылку на scope_identity() в ms. – user2625672

+0

Чем вы @ p.s.w.g, это сработало. – user2625672