PDA

View Full Version : استفاده از دستور insert و update



kochol
جمعه 28 مرداد 1384, 13:56 عصر
سلام
من می خواهم که وقتی ایتم جدیدی به جدولم اضافه شد id اون در یک جدول دیگه آپدیت بشه
مشکلم اینجاست که از کجا بفهمم که id این ایتم جدید چی بوده

Behrouz_Rad
جمعه 28 مرداد 1384, 13:59 عصر
آیا این ID به شکل AutoNumber ایجاد میشه یا به صورت دستی؟

kochol
جمعه 28 مرداد 1384, 14:15 عصر
به شکل AutoNumber

Behrouz_Rad
جمعه 28 مرداد 1384, 17:51 عصر
Select Max(myAutoNumField)

kochol
جمعه 28 مرداد 1384, 19:12 عصر
سلام
چون این یه برنامه asp.net هست امکان داره مشکلی پیش بیاد اگر چند کاربر با هم رکودهایی رو اضافه کنن

AminSobati
جمعه 28 مرداد 1384, 22:42 عصر
سلام
چون این یه برنامه asp.net هست امکان داره مشکلی پیش بیاد اگر چند کاربر با هم رکودهایی رو اضافه کنن
درسته. باید SELECT @@IDENTITY انجام بدین. متغیر IDENTITY@@ برای هر کاربر جداگانه عمل میکنه و چنانچه کاربرها همزمان Insert انجام بدن، هر کاربر IDENTITY@@ مربوط به خودشون رو دریافت میکنند.
در صورت تمایل،() SCOPE_IDENTITY و IDENT_CURRENT رو هم مطالعه بفرمایید

Behrouz_Rad
جمعه 28 مرداد 1384, 23:02 عصر
کاملا درسته.
http://us.i1.yimg.com/us.yimg.com/i/mesg/emoticons7/41.gif
http://us.i1.yimg.com/us.yimg.com/i/mesg/emoticons7/41.gif

kochol
شنبه 29 مرداد 1384, 13:24 عصر
سلام
خیلی ممنون از راهنماییتان


INSERT INTO TY (score) VALUES (5)
UPDATE TZ SET id2 = (SELECT @@IDENTITY) WHERE id=1

kochol
یک شنبه 30 مرداد 1384, 15:51 عصر
سلام

خواستم ببینم کد بالا درست جواب نمی ده چون یه نفر به من گفت از این کد استفاده کن


اگر خواستی در جدول اول ثبت اطلاعات داشته باشی و مقدار AutoNumber آنرا خوانده و جدول دوم را ویرایش یا ثبت کنی بهتر است که از طریق Transaction این کار را انجام دهی

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
BEGIN TRANSACTION
(INSERT INTO TY (score) VALUES (5
UPDATE TZ SET id2 = @@IDENTITY WHERE id=1
IF @@ERROR0
ROLLBACK TRAN
ELSE
COMMIT TRAN
SET TRANSACTION ISOLATION LEVEL READ COMMITTED

AminSobati
یک شنبه 30 مرداد 1384, 22:41 عصر
زمانی که چند عمل ویرایش، به هم وابسته هستند بطوریکه اگر یکی از اونها Fail شد، بقیه هم میبایست Undo بشن، کار صحیح اینه که داخل Transaction قرار بدین. اما به این معنی نیست که هر جا از IDENTITY@@ استفاده کردین، الزاما BEGIN TRAN داشته باشید

kochol
سه شنبه 01 شهریور 1384, 20:24 عصر
سلام
آخه اسشون می گفتند که Identity@@ برای هر کاربر مجزا نیست

AminSobati
سه شنبه 01 شهریور 1384, 23:43 عصر
دقیقا منظورتون چیه؟

kochol
چهارشنبه 02 شهریور 1384, 14:12 عصر
سلام
می خواستم بدونم Identity@@ برای هر کاربر مجزا هست یا نه؟

AminSobati
چهارشنبه 02 شهریور 1384, 22:31 عصر
وقتی کاربر بتونه Insert کنه، از این متغیر هم میتونه Select کنه