2

是否可以创建一个触发器,在表 2 更新后立即输出一个从表 1 中选择字段 1 的 CSV 文件?

我试过使用

CREATE OR ALTER trigger test_a0 for Table 2
active after insert or update position 0
AS
begin

  if (updating and new.field1 is not null) then
  output ('C:\test\test.csv');
  select field1 from table1;
  output;
  commit;

end
4

2 回答 2

2

不,这不可能在 Firebird 2.5 的触发器中输出到 CSV 文件。如果要输出到文件,则需要在客户端应用程序中执行此操作,或者使用外部表(技术上是二进制格式,而不是文本格式)。可以使用 UDF 创建一个复杂的解决方案。

在 Firebird 3 中,使用 UDR(用户定义的例程)可能有一个更简单的解决方案,但这在很大程度上是未知的领域,所以我实际上不确定是否可以这样做。

于 2017-04-13T20:04:35.237 回答
1

我想你可以用 IBExpert 工具ibeblock

 execute ibeblock
 as
 begin
  txt='';
  for
   select firstname, lastname
   from customer
   into :fn,:ln
   do
   begin
      txt=txt+fn+';'+ln+ibec_crlf();
   end;
   ibec_SaveToFile('C:\txt.csv',txt,__stfOverwrite);
 end
于 2017-04-13T20:54:25.063 回答