PDA

View Full Version : درج همزمان در دو table



nafisehk
دوشنبه 22 مهر 1392, 14:40 عصر
سلام

کانتکت یک سری اطلاعات+ شماره تلفن داره

اون یک سری تو یه جدوله و شماره تلفن تو یه جدول دیگه حالا وقتی یک کانتکت ذخیره میشه دو دسته اطلاعات تو دو تا جدول باید ذخیره شه.
از طرفی ممکنه کانتکت شماره تلفن نداشته باشه .
اینکه یه storeprocedure بنویسم که همزمان اطلاعات رو تو دوتا جدول درج کنه کار منطقیه آیا؟ و اگه دو تا کاربر همزمان بخوان کانتکت ذخیره کنن شماره تلفن یکی برا اون یکی ذخیره نمیشه آیا؟
:دی
اول باید کانتک ذخیره شه که یه id بگیره بعد با اون id شماره تلفنا هم ذخیره شن

plus
دوشنبه 22 مهر 1392, 15:20 عصر
بله منطقی هست.بعد از درج Contact، با استفاده از SCOPE_IDENTITY میتونید ID ای که مربوط به Contact درج شده در همون SCOPE هست رو داشته باشید و در درج شماره تلفن استفاده کنید تا همزمانی مشکلی ایجاد نکنه...

nafisehk
دوشنبه 22 مهر 1392, 15:35 عصر
بله منطقی هست.بعد از درج Contact، با استفاده از SCOPE_IDENTITY میتونید ID ای که مربوط به Contact درج شده در همون SCOPE هست رو داشته باشید و در درج شماره تلفن استفاده کنید تا همزمانی مشکلی ایجاد نکنه...

شماره تلفنا تو دیتاتیبله
چند تاسطره اونو چه جوری با storeprocedure ثبت کنم؟؟


نوع شماره شماره
داخلی 11
ثابت 0215599

nafisehk
دوشنبه 22 مهر 1392, 15:40 عصر
createprocedure [dbo].[InsertContact1]

(@cntType char(2),

@cntName varchar(1000),

@cntFirstName varchar(1000),

@cntLastName varchar(1000),

@cntRole varchar(1000),

@cntEmail varchar(1000),

@cntWebSite varchar(1000),

@cntTelNumbers varchar(1000),

@cntFaxNumber varchar(1000),

@cntAddress varchar(1000),

@cntDescription varchar(1000),

@ContactNoTypeID int,

@ContactNumber varchar(1000),

@cntID intout)



as

begin


insertinto ContactInfo(cntType,cntName,cntFirstName,cntLastNa me,cntRole,cntEmail,cntWebSite,cntTelNumbers,cntFa xNumber,cntAddress,cntDescription)values(@cntType, @cntName,@cntFirstName,@cntLastName,@cntRole,@cntE mail,@cntWebSite,@cntTelNumbers,@cntFaxNumber,@cnt Address,@cntDescription)

SELECT @cntID =@@IDENTITY

declare @MinID

@MinID=selectSCOPE_IDENTITY()

insertinto ContactNo(ContactID,ContactNoTypeID,ContactNumber) values(@cntID,@ContactNoTypeID,@ContactNumber)



end







من storeProcedure کار نکردم این کد اررور دراه....

nafisehk
دوشنبه 22 مهر 1392, 16:34 عصر
CREATE TYPE dbo.MyTableType AS TABLE

( ContactNoTypeID int,

ContactNumber VARCHAR(1000)



);


GO;

create procedure [dbo].[InsertContact1]

(@cntType char(2),

@cntName varchar(1000),

@cntFirstName varchar(1000),

@cntLastName varchar(1000),

@cntRole varchar(1000),

@cntEmail varchar(1000),

@cntWebSite varchar(1000),

@cntTelNumbers varchar(1000),

@cntFaxNumber varchar(1000),

@cntAddress varchar(1000),

@cntDescription varchar(1000),

@myTableType dbo.MyTableType READONLY,

@cntID int out)



as

begin


insert into ContactInfo(cntType,cntName,cntFirstName,cntLastNa me,cntRole,cntEmail,cntWebSite,cntTelNumbers,cntFa xNumber,cntAddress,cntDescription) values(@cntType,@cntName,@cntFirstName,@cntLastNam e,@cntRole,@cntEmail,@cntWebSite,@cntTelNumbers,@c ntFaxNumber,@cntAddress,@cntDescription)

SELECT @cntID = @@IDENTITY

declare @MinID int

set @MinID=(select SCOPE_IDENTITY())

select @MinID

insert dbo.ContactNo(@MinID,ContactNoTypeID,ContactNumber )

select ContactNoTypeID,ContactNumber

from @myTableType



end


GO;


تو این کد MinID ارور داره. اصلا این کد درسته؟

plus
دوشنبه 22 مهر 1392, 20:41 عصر
select رو چسبوندین به SCOPE_IDENTITY.

nafisehk
سه شنبه 23 مهر 1392, 11:39 صبح
select رو چسبوندین به SCOPE_IDENTITY.

اینجا اینجوری شده تو View درسته...

اشکالش یه جا دیگست

plus
سه شنبه 23 مهر 1392, 13:48 عصر
متن خطا رو بگذارین.