次のクエリを実行しようとすると
<!-- language: sql -->
CREATE TABLE STUDENT (
ID INTEGER NOT NULL PRIMARY KEY,
NAME VARCHAR(255) NOT NULL
);
CREATE GENERATOR GEN_STUDENT_ID;
SET TERM ^ ;
CREATE OR ALTER TRIGGER STUDENT_BI FOR STUDENT
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
IF (NEW.ID IS NULL) THEN
NEW.ID = GEN_ID(GEN_STUDENT_ID,1);
END^
SET TERM ; ^
「SQL ステートメントの型を判別できませんでした」というエラーが表示されます。
このスクリプトは C# コードで実行されています
FbConnectionStringBuilder csb = new FbConnectionStringBuilder();
csb.ServerType = FbServerType.Embedded;
csb.Database = "mydb.fdb";
csb.UserID = "SYSDBA";
csb.Password = "masterkey";
string conString = csb.ToString();
FbConnection.CreateDatabase(conString);
FbScript script = new FbScript("DB_GEN.sql");
script.Parse();
using (FbConnection conn = new FbConnection(conString))
{
conn.Open();
Console.WriteLine("Connection opened");
FbBatchExecution fbe = new FbBatchExecution(conn);
foreach (string cmd in script.Results) {
fbe.SqlStatements.Add(cmd);
}
try {
fbe.Execute();
}catch(Exception e)
{
Console.WriteLine(e.Message);
}
conn.Close();
Console.WriteLine("Connection closed");
Console.WriteLine("Press any key to continue . . . ");
Console.ReadKey(true);
}
Firebird Embedded v2.5.1 と FirebirdSql.Data.FirebirdClient v2.7.0.0 を使用しています