Форум: "Базы";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];
Внизинкрементирования Найти похожие ветки
← →
DWW (2004-11-16 08:07) [0]Помогите пожалуйста разобраться что нужно подставить
Это то я нашел для ключевого поля, его инкрементирования
Определение хранимой процедуры:
Create Procedure NewEmployeeKey Returns ( EmployeeKey Integer ) as
begin
EmployeeKey = Gen_Id( gnEmployeeKey, 1 ) ;
end
Определение триггера:
Create Trigger SetEmployeeKey for tbEmployee Active Before Insert Position 0 as
begin
if ( New.EmployeeKey is Null ) then begin
Execute Procedure NewEmployeeKey Returning_Values New.EmployeeKey ;
end
end
← →
Rule © (2004-11-16 08:51) [1]чегото ты намудрил, зачем тебе процедура
юзай IBExpert и посмотри что он генерит
сначала создаешь генератор для своей таблицы
CREATE GENERATOR gnEmployeeKey
а мотом тригер перед вставкой
CREATE TRIGGER SetEmployeeKey FOR tbEmployee
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
IF (NEW.EmployeeKey IS NULL) THEN
NEW.EmployeeKey = GEN_ID(SetEmployeeKey,1);
END
вот так вот
причем автоинкремент, как видно из кода, можно делать и не на ключевый полях (только тогда смысл непонятен) или по условию или ещё чего хочешь ...
← →
DWW (2004-11-16 22:28) [2]А как получить его (значение генератора) в Delphi, у меня не получалось
← →
DrPass © (2004-11-17 00:10) [3]Если используешь для его вставки триггер, то ты его не получишь, да и не надо - оно само вставится.
Если ты все же хочешь его получить, убери триггер, а получай запросом вида select GEN_ID(SetEmployeeKey,1) from rdb$database,
а потом уже делай с ним что хочешь.
← →
Sergey13 © (2004-11-17 09:53) [4]2[3] DrPass © (17.11.04 00:10)
>Если ты все же хочешь его получить, убери триггер,
Зачем убирать? Он не мешает. 8-)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.038 c