INSERT INTO "UndeletableRssFeedItems" ("Id", "FeedId", "Title", "Link",
    У тебя из 17 полей вьюхи 3 - вычислимые (COALESCE("EnclosureUrl", '') и


Тут возник вопрос по поводу вставки через эту вьюху. Ситуация следующая:

1) На вьюхе есть триггер, который втавляет данные в реальную таблицу:

CREATE TRIGGER "UndeletableRssFeedItems_BI0" FOR "UndeletableRssFeedItems"
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
 /* updating feed item part */
 INSERT INTO "RssFeedItems" ("FeedId", "Title", "Link", "Description", "Author", 
"Comments",
     "Guid", "PubDate", "SourceUrl", "SourceValue", "Hash", "Deprecated", 
"Hidden")
   VALUES (NEW."FeedId", NEW."Title", NEW."Link", NEW."Description", 
NEW."Author",
     NEW."Comments", NEW."Guid", NEW."PubDate", NEW."SourceUrl", 
NEW."SourceValue",
     COALESCE(NEW."Hash", 0), COALESCE(NEW."Deprecated", 0), 
COALESCE(NEW."Hidden", 0))
--    RETURNING "Id" INTO NEW."Id"
;
...
END

2) Сама вставка происходит через блок

EXECUTE BLOCK(
 "Author" VARCHAR(1024)=?Author,
 "Comments" VARCHAR(4096)=?Comments,
 ...
)
RETURNS(
 NEW_ID INTEGER)
AS BEGIN

 ...

   INSERT INTO "UndeletableRssFeedItems" (
     "Author",
     "Comments",
     ...
   VALUES (
     :"Author",
     :"Comments",
     ...
   RETURNING "Id" INTO :NEW_ID;

...

 SUSPEND;
END


Так вот. Если в 1) нет строки RETURNING "Id" INTO NEW."Id", то команда INSERT в 
2) мне возвращает NULL, хотя на самом деле в таблицу вставляется запись с реальным ID. Правильно ли 
такое поведение?

Ответить