ورود

View Full Version : سوال: insert کردن داخل دو جدول به صورت همزمان



mehrdad85
چهارشنبه 03 فروردین 1390, 23:59 عصر
سلام
من داخل پایگاه داده دو تا جدول دارم که از طریق یک کلید خارجی با هم ارتباط دارن
داخل یک صفحه میخوام اطلاعات را داخل فیلدهای مختلف این دو تا جدول ذخیره کنم
از دو تاsqldatasource استفاده کردم اما این روش مطلوب نیس برام چون میخام اطلاعات یا داخل هر دو تا جدول ذخیره بشه یا اصلا ذخیره نشه واسه این باید چکار کنم ؟
به ذهن خودم استفاده از تابع نویسی خطور کرده اما نمیدونم اصلا میشه یا گره ای را باز میکنه یا نه
ممنون میشم دوستان راهنمایی بفرمایند

مرسی

afsharsalar
چهارشنبه 17 فروردین 1390, 17:18 عصر
بهتره از StoredProcedure استفده بکنی وقتی اطلاعات اولی رو insert کردی بعد primary key رو return کنی که میشه FK جدول بعدی.
مثال:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go


ALTER Procedure [dbo].[Insert_Receptions]
@AutoID bigint output,
@CustomerID bigint,
@UserID bigint,
@ReceiveDate nvarchar(10),
@DateforCall nvarchar(10),
@Comment nvarchar(50),
@Notable nvarchar(50),
@NecessaryDescription nvarchar(50),
@OtherAccessories nvarchar(50)
as
Declare @ThisError int
Begin transaction tr1
Insert TBL_Receptions (CustomerID,UserID,ReceiveDate,DateforCall,Comment ,Notable,NecessaryDescription,OtherAccessories)
Values
(
@CustomerID,
@UserID ,
@ReceiveDate ,
@DateforCall,
@Comment,
@Notable,
@NecessaryDescription,
@OtherAccessories
)
select @AutoID=SCOPE_IDENTITY()
Set @ThisError=@@error
if @@error!=0 goto err1

-------------------------------------------------------------------------------------------------
Commit transaction tr1
Return @ThisError
-------------------------------------------------------------------------------------------------
err1:
Rollback transaction tr1
Return @ThisError

fatemehgolestani
پنج شنبه 18 فروردین 1390, 08:59 صبح
می توانید پس از Insert اول با استفاده از تابع identity @@کلید را در جدول بعدی Insert کنید و هردو insert را در یک Sp بنویسید

saman6488
پنج شنبه 18 فروردین 1390, 11:03 صبح
سلام،یه مثال ساده

ALTER procedure [dbo].[insertp]
@name nchar(10),
@famil nchar(10)
as
declare @auto int
begin transaction
insert into tname(fname) values(@name)
select @auto=@@IDENTITY from tname
insert into tfamil (idname,famil) values(@auto,@famil)
if(@@ERROR)<>0
begin
rollback transaction
return;
end
commit transaction