PDA

View Full Version : سوال: اضافه شدن به عدد یک فیلد عددی به صورت اتوماتیک در Firebird



Jarvis
چهارشنبه 08 خرداد 1392, 20:18 عصر
سلام و درود
( من قبلا در مورد این مطلب جستجو کردم و به نتیجه نرسیدم )
من یک بانک اطلاعاتی با Firebird طراحی کردم که یک فیلد به اسم ID دارم که به صورت خودکار باید بهش اضافه بشه ... اما نمی دونم چجوری باید این کار رو بکنم ...
توی نرم افزار Database Workbench که دیتابیس رو طراحی می کردم نوع فیلد رو گذاشتم روی AutoNumber و تنظیمش کردم به عنوان Primary Key اما نمی دونم چرا توی کد نویسی عمل نمی کنه ...

ممنون میشم راهنمایی کنید.

کامروا
چهارشنبه 08 خرداد 1392, 22:54 عصر
درود

فرض کنید جدول زیر رو ساختیم :


CREATE TABLE PEROSN
(
ID integer NOT NULL,
NAME varchar(50),
CONSTRAINT INTEG_2 PRIMARY KEY (ID)
);


در FireBird باید برای اینکه یک AutoInc داشته باشیم باید ایتدا یک Generator بسازیم به این شکل :


CREATE GENERATOR GEN_NEW_ID;
SET GENERATOR GEN_NEW_ID TO 1;

و بعد برای اینکه هرگاه رکورد جدید ثبت شد این Generator‌ کد جدید تولید کند و درون رکورد قرار دهیم باید از بوسیله یک Trigger‌ اینکارو انجام بدیم :


SET TERM ^ ;

CREATE TRIGGER BI_PERSON FOR PERSON
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
IF (NEW.ID IS NULL) THEN
NEW.ID = GEN_ID(GEN_NEW_ID, 1);
END^

SET TERM ; ^

وقتی میخواهید یک رکورد جدید اضافه کنید، بجای فیلد "کد" ، نام Generator‌ رو قرار بدید :
Insert Into Person Values (nextval(GEN_NEW_ID),'Kamrava');

موفق باشید

Jarvis
پنج شنبه 09 خرداد 1392, 00:27 صبح
بسیار ممنون و سپاسگذارم از شما ...
فقط این که این دستورات رو کجا باید بنویسم ؟

ممنون

کامروا
پنج شنبه 09 خرداد 1392, 10:42 صبح
من خودم از iSQL استفاده میکنم. با Database Workbench کار نکردم. اینها دستورات DDL هستند که باید بصورت یک کوئری اجرا بشند.
البته من احتمال میدم وقتی شما نوع فیلد رو AutoInc قرار دادید، بطور خودکار یک Generator بسازه و شما فقط نیاز دارید بدونید اسم این Generator‌ چی هست ، و همونطور که در بالا اشاره کردم ازش در هنگام Insert‌ کردن استفاده کنید. (البته مطمئن نیستم!)

BORHAN TEC
جمعه 10 خرداد 1392, 14:43 عصر
سلام
معمولاً تمامی IDE های مربوط به Firebird امکان ساخت فیلدهای AutoIncrement را به شما می دهند. روش کلی برای اینکار را آقا حامد توضیح داد. ولی برای درگیر نشدن با این مسائل در DataBase workbench کافیه که روی فیلد مربوطه کلیک راست کنید و گزینه Colums Specials رو انتخاب کنید و از پنجره ای که باز میشه گزینه Create AutoIncrement Trigger & Generator رو تیک دار کنید و Ok کنید.
موفق باشید...