گروه مقاله : SQL Server
تاريخ انتشار : 1394/02/05 - 14:16
كد :260

افزایش خودکار فیلدها در SQL

Auto-increment یا افزایش خودکار، اجازه می دهد که یک شماره منحصر به فرد، برای سطر جدیدی که درجدول وارد می شود، تولید شود.
خیلی اوقات زمانی که فیلد جدیدی وارد می شود، می خواهیم مقدار فیلد primary key  به طور خودکار ایجاد شود.
در این صورت از فیلد auto-increment در جدول استفاده می کنیم.
فرم دستور در MySQL:
دستور زیر تعیین می کند که ستون “ID”در جدول “Persons” برای فیلدprimary key   از افزایش خودکار استفاده کند.
CREATE TABLE Persons
(
ID int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (ID)
)
MySQL از کلید واژه AUTO_INCREMENT برای اعمال حالت افزایش خودکار استفاده می کند.
به طور پیش فرض، مقدار شروع برای AUTO_INCREMENT عدد یک می باشد و مقدار آن برای رکورد جدید، یک عدد افزایش می یابد.
برای اینکه مقدار شروع AUTO_INCREMENT را مقداری غیر از یک تعیین کنیم از دستور زیر استفاده می کنیم:
ALTER TABLE Persons AUTO_INCREMENT=100
برای وارد کردن یک رکورد جدید در جدول “Persons” دیگر نباید مقداری برای ستون “ID” تعیین کنیم (مقداری منحصر به فردی، به صورت خودکار در این فیلد وارد می شود):
INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen')
دستور بالا سطر جدیدی را در جدول Persons وارد می کند. برای ستون“ID” یک مقدار منحصر به فرد تعیین می شود. ستون “FirstName” به“Lars” و ستون “LastName” به “Monsen” اختصاص می یابد.
فرم دستور در SQL Server:
دستور زیر تعیین می کند که ستون “ID”در جدول “Persons” برای فیلدprimary key   از افزایش خودکار استفاده کند.
CREATE TABLE Persons
(
ID int IDENTITY(1,1) PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
MS SQL Server از واژه IDENTITY برای اعمال خصوصیت افزایش خودکار استفاده می کند.
در مثال بالا مقدار شروع برای IDENTITY عدد یک می باشد و برای هر رکورد جدید، یک عدد به آن افزایش می یابد.
نکته: برای اینکه تعیین کنید که ستون “ID” با مقدار 10 شروع شود و 5 تا 5 تا افزایش یابد IDENTITY را به (10،5) تغییر دهید.
برای اینکه سطر جدیدی را در جدول “Persons” وارد کنیم، دیگر نیازی نیست مقداری برای ستون “ID”وارد کنیم. (مقداری منحصر به فرد، به طور خودکار در این ستون وارد می شود):
INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen')
دستور بالا سطر جدیدی را در جدول “Persons” وارد می کند. به ستون “ID” یک مقدار منحصر به فرد داده می شود. ستون “FirstName” به “Lars”و ستون “LastName” به “Monsen” اختصاص می یابد.
فرم دستور درAccess :
دستور زیر تعیین می کند که ستون “ID”در جدول “Persons” برای فیلد primary key   از افزایش خودکار استفاده کند.
CREATE TABLE Persons
(
ID Integer PRIMARY KEY AUTOINCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
 MS Accessاز کلید واژه AUTOINCREMENT برای اعمال خاصیت افزایش خودکار استفاده می کند.
به طور پیش فرض، مقدار شروع برای AUTOINCREMENT عدد یک می باشد و مقدار آن برای هر رکورد جدید، یک عدد افزایش می یابد.
نکته: برای اینکه تعیین کنید که ستون “ID”با مقدار 10 شروع شود و 5 تا 5 تا افزایش یابد autoincrement را به AUTOINCREMENT (10,5) تغییر دهید.
برای اینکه سطر جدیدی را در جدول “Persons” وارد کنیم، دیگر نیازی نیست مقداری برای ستون”ID”  وارد کنیم. (مقدار منحصر به فردی به طور خودکار در این ستون وارد می شود)
INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen')
دستور بالا سطر جدیدی را در جدول “Persons” وارد می کند. به ستون “P_Id” یک مقدار منحصر به فرد داده می شود. ستون “FirstName” به“Lars” و ستون “LastName” به “Monsen” اختصاص می یابد.
فرم دستور در Oracle :
در Oracle کار کمی پیچیده تر است.
 شما باید فیلد auto-increment را با یک  sequence object ایجاد کنید. (این object، یک توالی از اعداد را تولید می کند)
دستور CREATE SEQUENCE که در زیر آمده اعداد متوالی تولید می کند :
CREATE SEQUENCE seq_person
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10
دستور بالا یک sequence object  با نام seq_person ایجاد می کند، که با عدد یک شروع و یک عدد یک عدد افزایش می یابد. همچنین برای کارآیی و سرعت دسترسی بیشتر تا 10 مقدار را در حافظه خود (cache) نگه می دارد.
برای درج یک رکورد جدید در جدول  "Persons"، باید از تابع nextval استفاده کنیم (این تابع، مقدار بعدی را از seq_person sequence دریافت می کند):
INSERT INTO Persons (ID,FirstName,LastName)
VALUES (seq_person.nextval,'Lars','Monsen')
دستور بالا سطر جدیدی را در جدول “Persons” وارد می کند. به ستون “ID” عدد بعدی از توالی seq_person داده می شود. ستون “FirstName”به “Lars” و ستون “LastName” به “Monsen” اختصاص می یابد.
 
 
نظرات كاربران :