Как заполнить колонку с помощью генератора? - PullRequest
0 голосов
/ 07 января 2019

Я создаю веб-приложение ASP.NET MVC на C #. У меня создан класс модели, основанный на базе данных Firebird. У меня проблема в том, что, когда я вставляю новую запись в таблицу, генератор таблицы не вызывается, поэтому я получаю значение NULL в этом столбце.

Как я могу указать для каждой таблицы / поля, какие столбцы являются IDENTITY столбцами и связать их с соответствующими ГЕНЕРАТОРАМИ в Firebird?

1 Ответ

0 голосов
/ 08 января 2019

1. Создать генератор

CREATE SEQUENCE GEN_TESTTABLE_ID

2. Создать триггер

CREATE TRIGGER testtable_bi FOR testtable
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.id IS NULL) THEN
    NEW.id = GEN_ID(gen_testtable_id,1);
END

3. Процедура создания

CREATE PROCEDURE sp_gen_testtable_id
RETURNS (id INTEGER)
AS
BEGIN
  id = GEN_ID(gen_testtable_id, 1);
  SUSPEND;
END

В Firebird 3 вы можете использовать идентификационный первичный ключ

create table t1 (
   id integer generated by default as identity primary key
)

Также полезная ссылка для ответа

...