2012-02-15 50 views
-1

一个子表的基本I具有在SQL Server 2个表2005多保存数据在主表中自动运行数

  1. tblEmployee(EMP_NO INT,EMP_NAME NVARCHAR(50)
  2. tblEducation(Edu_No INT,Edu_Name NVARCHAR(50),EMP_NO)

EMP_NO和Edu_No字段是自动增加编号。

与关系1至许多

我想创建存储过程来同时保存两个表中的数据。例如,输入数据

Emp_No Emp_Name  
1   Jonh  

Edu_No Edu_Name Emp_No 
1   IT   1 
2  Bussiness  1 
3  Marketing  1 

请帮忙。谢谢。

+1

好的,那么你有什么试过,你有什么特别的问题? – 2012-02-15 02:51:01

回答

0

如果我理解正确的话,下面的过程将工作:

CREATE PROCEDURE insert_both 
AS 
BEGIN 
    INSERT INTO tblEmployee(Emp_Name) VALUES('John') 
    DECLARE @emp_key int 
    SET @emp_key = SCOPE_IDENTITY() 
    INSERT INTO tblEducation(Edu_Name, Emp_No) VALUES('IT',@emp_key); 
    INSERT INTO tblEducation(Edu_Name, Emp_No) VALUES('Business',@emp_key); 
    INSERT INTO tblEducation(Edu_Name, Emp_No) VALUES('Marketing',@emp_key); 
END 
+0

这种情况;如果我为存储过程创建参数:Emp_Name和Edu_Name。 在vb.net我将值传递给参数,它将只保存一次数据。 Ex Emp_Name =“Jonh”,Edu =“IT”。 如何在vb.net中保存1条记录到tblEmployee并同时保存多条记录到tblEducation。 – Sokea 2012-02-15 04:48:15

0
DECLARE @emID int 
INERT INTO tblEmployee(Emp_Name) VALUES('NAME_OF_EM'); 

@emID = SCOPE_IDENTITY() 

-- INSET Education 
INERT INTO tblEducation (Edu_Name, Emp_No) VALUES('IT', emID ); 
INERT INTO tblEducation (Edu_Name, Emp_No) VALUES('Bussiness', emID ); 

您可以通过SCOPE_IDENTITY得到最后的汽车数量增加()。

+0

这种情况;如果我为存储过程创建参数:Emp_Name和Edu_Name。 在vb.net我将值传递给参数,它将只保存一次数据。 Ex Emp_Name =“Jonh”,Edu =“IT”。 如何在vb.net中保存1条记录到tblEmployee并同时保存多条记录到tblEducation。 – Sokea 2012-02-15 04:48:37