یادداشت های برنامه نویس

تجربیات و سورس کدهای رایگان در زمینه برنامه نویسی دلفی و دیتابیس ها

یادداشت های برنامه نویس

تجربیات و سورس کدهای رایگان در زمینه برنامه نویسی دلفی و دیتابیس ها

شماره اتوماتیک در Firebird

با سلام خدمت دوستان و همراهان عزیز

یکی از مشکلات FB نداشتن شماره اتوماتیک autoincerement است برای اینکه در فیلدهاتون شماره اتوماتیک داشته باشید باید روندی را طی کنید.

ابتدا باید برای فیلدتون یک Generator ایجاد کنید. اگر از ide استفاده می کنید برای ساخت جدول هاتون این کار به سادگی صورت می پذیرد.

حالا اگه بخواهیم که این فیلد دیتابیس شماره خودکار اختصاص بده باید در هنگام اینسرت کردن چند کدی بنویسید

GEN_ID(GEN_T1_ID, 1)

این مقدار باید به جای مقدار فیلد شماره اتوماتیک وارد شود

Insert into  t1(id,b) values GEN_ID(GEN_T1_ID, 1),'sssssssss');


GEN_T1_ID نام generator شما است.



اما نکته اساسی اینجاست اگه بخواهیم در زبان های برنامه نویسی مثل دلفی استفاده کنیم چه کار باید کرد.طبیعتا چون نوع فیلد عددی است چنین مقدار نمی توان استفاده کرد. یا مثلا اگر از dbgrid استفاده می کنیم چنین کاری به راحتی امکان پذیر نیست. برای این کار باید شما یک تریگر بنویسید.

به این شکل

SET TERM ^ ;



CREATE OR ALTER TRIGGER Auto_id FOR T1
ACTIVE BEFORE INSERT POSITION 0
AS
begin
 if (NEW.id is NULL) then NEW.id = GEN_ID(gen_T1_id, 1);
 else   NEW.id = GEN_ID(gen_T1_id, 1);
end
^


SET TERM ; ^

البته این تریگر تجربه شخص خودمه چون سایت FB یک جور دیگه نوشته بود کلی باهاش مصیبت داشتم در دلفی!!


موفق باشید

نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد