Сокращенная идентификационная запись Firebird - PullRequest
0 голосов
/ 15 февраля 2010

Что делают другие, чтобы упростить создание простых, последовательных суррогатных ключей, заполненных SEQUENCE (a.k.a. GENERATOR) в Firebird> = 2.1? Я считаю процесс сравнительно трудным:

Например, в PostgreSQL я просто набираю:

pg> CREATE TABLE tbl (
  >   id SERIAL NOT NULL PRIMARY KEY,
  > ...

В MySQL я просто набираю:

my> CREATE TABLE tbl (
  >   id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  > ...

Но в Firebird я набираю:

fb> CREATE TABLE tbl (
  >   id BIGINT NOT NULL PRIMARY KEY,
  > ...

fb> CREATE SEQUENCE tbl_id_seq;

fb> SET TERM !!;
  > CREATE TRIGGER tbl_id_trg FOR tbl
  > ACTIVE BEFORE INSERT POSITION 0
  > AS
  > BEGIN
  >   IF ((new.id IS NULL) OR (new.id <= 0)) THEN
  >   BEGIN
  >     new.id = GEN_ID(tbl_id_seq, 1);
  >   END
  > END !!
  > SET TERM ; !!

... и мне становится скучно, когда я достигаю определения триггера. Тем не менее, я обычно делаю SEQUENCE поля идентификаторов с поддержкой для временных, разрабатываемых и одноразовых таблиц. Что делают другие, чтобы упростить это? Работать с IDE? Запустить предварительную обработку собственного сценария perl над файлом DDL? Etc.

Ответы [ 2 ]

2 голосов
/ 16 февраля 2010

Используйте IBExpert , и вы можете сделать это в 4 клика

Я думаю, что ПОСЛЕДОВАТЕЛЬНОСТЬ в стандарте SQL.

0 голосов
/ 17 февраля 2010

Вы всегда можете создать последовательность без триггера и использовать GEN_ID (tbl_id_seq, 1) в запросе вставки. Но, как уже сказал Хьюг: есть инструменты (например, IBExpert), которые позволят вам очень просто сгенерировать шаблонный код.

...