PDA

View Full Version : سوال: ساخت autonumber با triggger



Voodoo.NET
یک شنبه 02 تیر 1387, 11:07 صبح
با سلام،

من میخواستم یک Trigger بنویسم که عمل autonumber را انجام دهد.
با Oracle به دلیل قابلیتی که PL/SQL دارد، میتوان آن را به صورت زیر نوشت:

تعریف یک جدول معمولی:


create table tbl_autonumber(
id number primary key,
txt varchar2(20)‎
);‎
تعریف sequence:


create sequence seq_autonumber;‎

و Trigger مربوطه:


create trigger trg_autonumber
before insert on tbl_autonumber
for each row
begin
select seq_autonumber.nextval into :new.id from dual;
end;‎
/


اگر از دوستان کسی میتواند آن را با T-SQL بنویسد، ممنون میشوم که راهنماییم کند.
با تشکر.

SabaSabouhi
سه شنبه 04 تیر 1387, 10:38 صبح
با سلام
اول اين كه چرا از Identity استفاده نمى‌كنيد؟
دوم اين كه خوب اين كار مشكلى نيست، كافيه يه Trigger روى Insert ايجاد كنيد و ستون مورد نظر رو مقدار بدين ( بيشترين مقدار رو بگيريد و يكى اضافه كنيد )
البته اين كار با Identity چند تا تفاوت داره
يكى اين كه تو Identity اگه Transaction شما Rollback بشه يه شماره مى‌سوزه و اين باعث ايجاد Gap توى اون ستون مى‌شه كه براى مواردى مثل شماره فاكتور مناسب نيست.
دوم اين كه اگه ستون رو Identity تعريف كنيد اون ستون تو عمل Insert استفاده نمى‌شه ولى اگه بخواهيد از Trigger استفاده كنيد بايد يه مقدارى رو ( مثلاً صفر ) به اون بدين.

صبا صبوحى