2013-12-10 84 views
0

有沒有辦法使用fluentmigrator/firebirdsql創建觸發器?Fluentmigrator火鳥觸發器

當我嘗試這個

Execute.Sql(@"CREATE TRIGGER TEST_BI FOR 'Test' 
ACTIVE BEFORE INSERT POSITION 0 
AS 
BEGIN 
    IF (NEW.ID IS NULL) THEN 
    NEW.ID = GEN_ID(GEN_TEST_ID,1) 
END 
"); 

沒有任何反應。 我使用SET TERM ^嘗試了firebird語法;但是我得到一個錯誤。我也嘗試用腳本調用DDL語句,用Execute.Script()但仍然沒有。

有什麼建議嗎?謝謝!

+0

你提交事務在您創建觸發器? – ain

+0

SET TERM不是Firebird語法的一部分,它是ISQL等工具的一部分。另外,PSQL塊中的語句需要以分號結尾(只在** PSQL塊內**)。 –

+0

定義遷移時,我使用'FluentMigrator.TransactionBehavior.Default'。 –

回答

0

我不太瞭解Firebird,但我猜測你不能在事務中創建觸發器。退房有關如何關閉交易此Wiki網頁:​​

您需要在您的遷移這樣的設置屬性:

[Migration(201304210958, TransactionBehavior.None)] 
+0

我嘗試了兩種方法,我也在新的遷移中分離了觸發器,但仍然沒有任何結果。 –

+0

您是否嘗試過使用跑步者的輸出和輸出文件參數來查看跑步的內容? https://github.com/schambers/fluentmigrator/wiki/Command-Line-Runner-Options當它直接運行在Firebird上時它有效嗎? –