我想从父表插入数据到子表只有一个sql查询。在同一时间插入数据到父表和子表sql
我有两个表,用户表和用户信息表
用户表 - 父表
- USER_ID - PK
- 用户名
- 密码
的UserInfo表 - 儿童表
- USER_ID - FK到父表
- 姓氏
- 姓名 等...
我用两个插入之前有相同的USER_ID。有没有办法在单个查询中执行它?
我想从父表插入数据到子表只有一个sql查询。在同一时间插入数据到父表和子表sql
我有两个表,用户表和用户信息表
用户表 - 父表
的UserInfo表 - 儿童表
我用两个插入之前有相同的USER_ID。有没有办法在单个查询中执行它?
你可以用一个视图来代替插入触发器。我不是说这是最好的主意,但你可以。另外,你可以把它包装在你传递用户名,密码,名字,姓氏等的存储过程中,proc将为你处理两个(或多个)插入。
谢谢。我不知道该怎么做,但我会检查一些教程。你能建议我在哪里可以找到一个很好的教程呢? – rrr
以下是CREATE TRIGGER的文档:http://msdn.microsoft.com/en-us/library/ms189799.aspx。 –
创建接收将是适合需要的所有参数的存储过程,你可以尝试:
CREATE PROCEDURE sp_insertAll @parameter1 parameterType, @parameter2 parameterType, @etc parameterType
AS
/*DO YOUR INSERTS HERE*/
GO
,然后执行它:
EXEC sp_insertAll @parameter1 = value, @parameter2 = value, @etc = value
您可以创建一个SP,并通过所有参数。
例如,
CREATE PROCEDURE SP_InsertMasterDetail
@param1 <datatype>
@param2 <datatype>
..................
@param1 <datatype>
AS
DECLARE @p_id int
--SETP 1 -- INSERT TO MASTER_TABLE
INSERT INTO MASTER_TABLE()
VALUES (..........)
SELECT @p_id= SCOPE_IDENTITY()
--STEP 2 -- INSERT TO DETAILS_TABLE
INSERT INTO DETAILS_TABLE()
VALUES(@p_id,.................)
然后执行它像,
EXEC SP_InsertMasterDetail param1,param2,param3,......
我觉得OUTPUT子句在这种情况下的理想选择。 你一次插入很多记录。 http://technet.microsoft.com/en-us/library/ms177564.aspx – KumarHarsh