Модераторы: Akella
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> INCREMENT FIELD 
:(
    Опции темы
Fighter
Дата 12.1.2007, 03:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 810
Регистрация: 5.1.2005

Репутация: нет
Всего: 2



В Interbase как известно нет поля инкрементного типа. Но это поле можно как то сделать с использованием триггеров и еще чего-то там. Покажите пожалуйста.
PM MAIL   Вверх
Akella
Дата 12.1.2007, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



создаем таблицу
Код

CREATE TABLE GAZ (
    ID    "INT" NOT NULL /* "INT" = INTEGER CHECK ((VALUE >= 0) or (VALUE is NULL) or (VALUE = -1)) */,
    NAME  STRING20 NOT NULL COLLATE PXW_CYRL /* STRING20 = VARCHAR(20) */,
    EXP   BOOL COLLATE PXW_CYRL /* BOOL = VARCHAR(1) DEFAULT 'T' */
);


создаём генератор (он будет хранить уникальное значение)
Код

CREATE GENERATOR GEN_GAZ_ID;


создаем первичный ключ
Код

ALTER TABLE GAZ ADD CONSTRAINT PK_GAZ PRIMARY KEY (ID);


создаём триггер "перед добавлением"
Код

/* Trigger: GAZ_BI */
CREATE TRIGGER GAZ_BI FOR GAZ
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.ID IS NULL) THEN
    NEW.ID = GEN_ID(GEN_GAZ_ID,1); -- новое значение для поля ID, будет сгененрировано функцией GEN_ID
-- но будет сгенерировано в том случае, если ты передашь пустое значение
END

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Interbase"
Alex

Обязательно указание:

1. Версию InterBase (Firebird, Yaffil)

2. Способа доступа (ADO, BDE, IBX и т.д.)

  • КАК ПРАВИЛЬНО ОФОРМИТЬ КОД - ЗДЕСЬ
  • КАК ПРАВИЛЬНО УКАЗАТЬ ТЕКСТ ОШИБКИ - ЗДЕСЬ
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • FAQ раздела лежит здесь!

Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Firebird, Interbase | Следующая тема »


 




[ Время генерации скрипта: 0.1011 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.