PDA

View Full Version : مشکل در auto increment کردن 3 فیلد در یک جدول در sql server 2008



mehdi_2013
چهارشنبه 13 آذر 1392, 10:13 صبح
با سلام
من میخوام داخل 1 جدول 3 فیلد من بصورت خودکار باشن
یکی از فیلدهام ID جدول هست
دومی و سومی فیلدهای مثلا شماره حساب و شماره کارت هستن که میخوام بصورت خودکار تولید بشن
اما هر کاری میکنم نمیشه
لطفا کمک کنید

m101_30
چهارشنبه 13 آذر 1392, 10:39 صبح
فكر نميكنم درست باشه كه شماره حساب و شماره كارت بصورت خودكار افزايش پيدا كنه.
راه حل من استفاده از تريگر يا پروسيجر هاست

mehdi_2013
چهارشنبه 13 آذر 1392, 10:51 صبح
میشه راهنمایی کنید چطور باید پروسیجرش رو بنویسم؟
اصلا میشه 3 تا فیلد از نوع int در یک جدول بصورت خودکار باشند؟

Kubuntu
چهارشنبه 13 آذر 1392, 19:00 عصر
1- برای آتونامبر کردن یک فیلد بصورت زیر عمل می کنی:
right click on a table> select Design
در سمت راست قسمت identity column اون فیلدی رو که می خوای خودش پر بشه رو انتخاب می کنی. که معمولا کلید اصلی رو آتونامبر می گیرن

برای دو ستون حساب کاربری که قبلا در جدولی ذخیره شده و من اسمش رو می ذارم A. اگر از قبل جایی ذخیره شده، کافیست کلید اصلی جدول A را در این جدول ذخیره کنید. و هنگام نیاز به جدول A مراجعه کنید. (عرف کار اینه، چون می گی می خوای خودش پر بشه، پس یعنی قبلا نوشته شده )

بنظرم این جدولت یه خورده غیر ضروریه. می شه بهم بگی با ذخیره مجدد اطلاعاتی که یک بار ثبت شده ، می خوای چه استفاده ای ازش بکنی؟؟؟
برای اینکه خودش خودکار پر بشه نیاز به یه شرط یا مقدار هست که بشه دستور insert رو نوشت

mehdi_2013
چهارشنبه 13 آذر 1392, 19:13 عصر
نه جدول حساب کاربری من جدا نیست
ببینید من یک جدول دارم با فیلد های زیر :
ID,name,family,shomare_hesab,shomare_card
در این جدول id کلید اصلی و به صورت خودکار یکی یکی اظافه میشه
ولی سوالم اینه که دو فیلد دیگه چطور باید مقدار دهی شن که تکراری نباشند (shomare_hesab,shomare_card)؟؟؟؟
میخوام این 2 فیلد هم موقع درج 1 واحد اظافه بشن مثل ID؟؟؟؟؟؟؟؟؟؟؟؟

Kubuntu
چهارشنبه 13 آذر 1392, 19:24 عصر
بذار ترجمه کنم که چی داری می گی!
داری می گی فیلد شماره حساب یک مقدار نامعتبر در دنیای واقعی هستش که فقط می خوای مثل کلید اصلی باشه. در نتیجه همیشه مقدار کلید با این دو تا برابره.
در این صورت کافیه: اول فیلد شماره حساب رو انتخاب کن . در پراپرتی پایین صفحه identity specification رو باز کن. مقدار IsIdentity رو yes کن.
حالا با هر insert خودش پر می کنه.

امیدوارم متوجه باشی که کارت خیلی غیر منطقیه. چون شماره حسابها خودشون بصورت خودکار و یکی یکی اضافه نمی شن

mehdi_2013
چهارشنبه 13 آذر 1392, 19:37 عصر
پس اگه میشه راهنمایی کنید چطوری شماره حساب تولید کنم؟
جدولش جدا باشه؟؟

Kubuntu
چهارشنبه 13 آذر 1392, 19:57 عصر
نه نیاز نیس جدولش جدا باشه
نحوه تولید یک شماره حساب بستگی به بانک داره که شرط و شروط ممکنه بذارن. مثلا شماره شبا از شماره سپرده گرفته شده.
کار خاصی نداره مثل ساختن رمز می مونه ولی شما چک می کنی آیا این حساب قبلا توسط شما ایجاد شده یا نه.
دستور EXISTS در sql چک می کنه آیا وجود داره یا نه.
مثال:
IF NOT EXISTS (SELECT 1 FROM dbo.[saveError] WHERE num= @e AND spName= @sp )
BEGIN
INSERT INTO dbo.[saveError] (num,spName,info)
VALUES(@e,@sp, @info )
END
در خط if می گم اگر وجود نداشت بیا اضافه کن.
اینطوری مقدار تکراری نداریم

mehdi_2013
چهارشنبه 13 آذر 1392, 20:08 عصر
مرسی دستتون درد نکنه