更新触发器中的令牌未知错误
Token unknown error in update Trigger
这是我尝试为视图创建的更新触发器。很清楚我要实现的目标:
SET TERM !! ;
CREATE TRIGGER SST_Insert FOR SpaceSpaceTypes
BEFORE INSERT AS
DECLARE VARIABLE NEW_TYPE_ID;
BEGIN
NEW_TYPE_ID=(SELECT MAX(type_id) FROM SpaceTypes WHERE type_name=NEW.type_name);
INSERT INTO Space values (NEW.address,NEW.company_id,NEW.area,NEW_TYPE_ID);
END!!
SET TERM ; !!
我尝试了 !!
和 ;
的不同组合。我尝试删除一个变量。它没有帮助。上面查询的错误是:
语句失败,SQLSTATE = 42000
Dynamic SQL Error
-SQL error code = -104
-Token unknown - line 3, column 29
-;
最好的选择是保留为
SET TERM !! ;
CREATE TRIGGER SST_Insert FOR SpaceSpaceTypes
BEFORE INSERT AS
BEGIN
INSERT INTO Space values (NEW.address,NEW.company_id,NEW.area,(SELECT MAX(type_id) FROM SpaceTypes WHERE type_name=NEW.type_name));
END!!
SET TERM ; !!
这一行有问题:
DECLARE VARIABLE NEW_TYPE_ID;
您没有指定 NEW_TYPE_ID
的类型,所以语句不完整,分号在那个位置是意外的,这导致 token unknown错误。
DECLARE VARIABLE
的语法是:
DECLARE [VARIABLE] <varname>
{<datatype> | <domain> | TYPE OF {<domain> | COLUMN <rel.col>}
[NOT NULL] [CHARACTER SET <charset>] [COLLATE <collation>]
[{DEFAULT | = } <initvalue>];
所以你至少需要使用:
DECLARE VARIABLE NEW_TYPE_ID INTEGER;
或更高级:
DECLARE VARIABLE NEW_TYPE_ID TYPE OF COLUMN SpaceTypes.type_id;
这是我尝试为视图创建的更新触发器。很清楚我要实现的目标:
SET TERM !! ;
CREATE TRIGGER SST_Insert FOR SpaceSpaceTypes
BEFORE INSERT AS
DECLARE VARIABLE NEW_TYPE_ID;
BEGIN
NEW_TYPE_ID=(SELECT MAX(type_id) FROM SpaceTypes WHERE type_name=NEW.type_name);
INSERT INTO Space values (NEW.address,NEW.company_id,NEW.area,NEW_TYPE_ID);
END!!
SET TERM ; !!
我尝试了 !!
和 ;
的不同组合。我尝试删除一个变量。它没有帮助。上面查询的错误是:
语句失败,SQLSTATE = 42000
Dynamic SQL Error -SQL error code = -104 -Token unknown - line 3, column 29 -;
最好的选择是保留为
SET TERM !! ;
CREATE TRIGGER SST_Insert FOR SpaceSpaceTypes
BEFORE INSERT AS
BEGIN
INSERT INTO Space values (NEW.address,NEW.company_id,NEW.area,(SELECT MAX(type_id) FROM SpaceTypes WHERE type_name=NEW.type_name));
END!!
SET TERM ; !!
这一行有问题:
DECLARE VARIABLE NEW_TYPE_ID;
您没有指定 NEW_TYPE_ID
的类型,所以语句不完整,分号在那个位置是意外的,这导致 token unknown错误。
DECLARE VARIABLE
的语法是:
DECLARE [VARIABLE] <varname>
{<datatype> | <domain> | TYPE OF {<domain> | COLUMN <rel.col>}
[NOT NULL] [CHARACTER SET <charset>] [COLLATE <collation>]
[{DEFAULT | = } <initvalue>];
所以你至少需要使用:
DECLARE VARIABLE NEW_TYPE_ID INTEGER;
或更高级:
DECLARE VARIABLE NEW_TYPE_ID TYPE OF COLUMN SpaceTypes.type_id;