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

از ویکی‌کد، دانشنامهٔ برنامه‌نویسی
پرش به ناوبری پرش به جستجو
Main Page Tutorial
Sql-menu.png
موارد آموزشی
بانک اطلاعاتی
۱عبارت CREATE DATABASE
۲عبارت DROP DATABASE
۳پشتیبان‌گیری بانک اطلاعاتی برای SQL Server
۴عبارت CREATE TABLE
۵عبارت DROP TABLE
۶عبارت ALTER TABLE
۷محدودیت‌ها
۸محدودیت NOT NULL
۹محدودیت UNIQUE
۱۰محدودیت PRIMARY KEY
۱۱محدودیت FOREIGN KEY
۱۲محدودیت CHECK
۱۳محدودیت DEFAULT
۱۴عبارت CREATE INDEX
۱۵فیلد افزایش خودکار
۱۶کار با تاریخ‌ها
۱۷Viewها
۱۸تزریق
۱۹میزبانی
مرجع
مثال‌ها

فیلد افزایش خودکار (به انگلیسی: AUTO INCREMENT Field)

Auto-increment امکان تولید خودکار یک عدد منحصر بفرد را هنگام واردکردن رکورد به یک جدول فراهم می‌کند.[۱]

اغلب فیلد کلید اصلی است که می‌خواهیم هر بار هنگام واردکردن رکورد جدید بطور خودکار تولید شود.

نحو برای MySQL

عبارت SQL زیر ستون "Personid" را بعنوان فیلد کلید اصلی auto-increment در جدول “Persons” تعریف می‌کند:

1 CREATE TABLE Persons (
2     Personid int NOT NULL AUTO_INCREMENT,
3     LastName varchar(255) NOT NULL,
4     FirstName varchar(255),
5     Age int,
6     PRIMARY KEY (Personid)
7 );

MySQL از کلمه کلیدی AUTO_INCREMENT برای اجرای ویژگی افزایش خودکار استفاده می‌کند.

بطور پیش‌فرض، مقدار شروع AUTO_INCREMENT، یک است و برای هر رکورد جدید یک واحد افزایش می‌یابد.

برای اینکه دنباله AUTO_INCREMENT از مقدار دیگری آغاز شود، از عبارت SQL زیر استفاده می‌کنیم:

ALTER TABLE Persons AUTO_INCREMENT=100;

برای واردکردن رکورد جدید در جدول “Person”، برای ستون “Personid” مقداری را مشخص نمی‌کنیم (یک مقدار یکتا بطور خودکار اضافه خواهد شد):

1 INSERT INTO Persons (FirstName,LastName)
2 VALUES ('Lars','Monsen');

عبارت SQL بالا رکورد جدیدی را به جدول “Persons” اضافه می‌کند. ستون “Personid” یک مقدار یکتا می‌گیرد. ستون "FirstName" برابر با “Lars” و ستون "LastName" برابر با "Monsen"تنظیم می‌شود.

نحو برای SQL Server

عبارت SQL زیر ستون "Personid" را بعنوان فیلد کلید اصلی auto-increment تعریف می‌کند:

1 CREATE TABLE Persons (
2     Personid int IDENTITY(1,1) PRIMARY KEY,
3     LastName varchar(255) NOT NULL,
4     FirstName varchar(255),
5     Age int
6 );

MS SQL Server از کلمه کلیدی IDENTITY برای اجرای ویژگی auto-increment استفاده می‌کند.

در مثال بالا، مقدار شروع IDENTITY برابر ۱ است و به ازای هر رکورد جدید یک واحد افزایش می‌یابد.

نکته: برای تعیین اینکه ستون "Personid" باید از مقدار ۱۰ شروع شود و هربار ۵ واحد اضافه شود، آن را به IDENTITY(10,5) تغییر دهید.

برای واردکردن رکورد جدید به جدول "Persons"، لازم نیست مقداری برای ستون "Personid" مشخص کنیم (بطور خودکار مقدار منحصربفردی اضافه خواهد شد):

1 INSERT INTO Persons (FirstName,LastName)
2 VALUES ('Lars','Monsen');

عبارت SQL بالا رکورد جدیدی به جدول "Persons" اضافه می‌کند. به ستون "Personid" مقدار منحصر بفردی داده می‌شود. ستون "FirstName" مقداری برابر با "Lars" و ستون "LastName" مقداری برابر با "Monsen" خواهد داشت.

نحو برای Access

عبارت SQL زیر ستون "Personid" را بعنوان فیلد کلید اصلی auto-increment در جدول "Persons" تعریف می‌کند:

1 CREATE TABLE Persons (
2     Personid AUTOINCREMENT PRIMARY KEY,
3     LastName varchar(255) NOT NULL,
4     FirstName varchar(255),
5     Age int
6 );

MS Access از کلمه کلیدی AUTOINCREMENT برای اجرای ویژگی auto-increment استفاده می‌کند.

بطور پیش‌فرض، مقدار آغازین برای AUTOINCREMENT برابر ۱ است و به ازای هر رکورد جدید ۱ واحد به آن اضافه می‌شود.

نکته: برای تعیین اینکه ستون "Personid" باید از مقدار ۱۰ شروع شود و هربار ۵ واحد اضافه شود، autoincrement را به AUTOINCREMENT(10,5) تغییر دهید.

برای واردکردن رکورد جدید به جدول "Persons"، لازم نیست مقداری برای ستون "Personid" مشخص کنیم (بطور خودکار مقدار منحصر بفردی اضافه خواهد شد):

1 INSERT INTO Persons (FirstName,LastName)
2 VALUES ('Lars','Monsen');

عبارت SQL بالا رکورد جدیدی به جدول "Persons" اضافه می‌کند. به ستون "Personid" مقدار منحصر بفردی داده می‌شود. ستون "FirstName" مقداری برابر با "Lars" و ستون "LastName" مقداری برابر با "Monsen" خواهد داشت.

نحو برای Oracle

در Oracle کد کمی پیچیده‌تر است.

باید یک فیلد auto-increment با شیء دنباله (به انگلیسی: Sequence Object) ایجاد کنیم (این شیء یک دنباله عددی ایجاد می‌کند).

از نحو CREATE SEQUENCE زیر استفاده می‌شود:

1 CREATE SEQUENCE seq_person
2 MINVALUE 1
3 START WITH 1
4 INCREMENT BY 1
5 CACHE 10;

کد بالا یک شیء دنباله به نام seq person ایجاد می‌کند، که با ۱ آغاز می‌شود و هربار ۱ واحد اضافه می‌شود. همچنین برای عملکرد بهتر ۱۰ مقدار را cache می‌کند. ویژگی cache مشخص می‌کند چند مقدار دنباله برای دسترسی سریعتر در حافظه ذخیره شود.

برای وارد رکورد جدید به جدول "Persons"، باید از تابع nextval استفاده کنیم (این تابع مقدار بعدی دنباله seq person را بازیابی می‌کند):

1 INSERT INTO Persons (Personid,FirstName,LastName)
2 VALUES (seq_person.nextval,'Lars','Monsen');

عبارت SQL بالا رکورد جدیدی به جدول "Persons" اضافه می‌کند. به ستون "Personid" مقدار منحصر بفردی داده می‌شود. ستون "FirstName" مقداری برابر با "Lars" و ستون "LastName" مقداری برابر با "Monsen" خواهد داشت.


منابع آموزشی