HSQL 触发器:用户缺少权限或找不到对象:NEWROW.ID
HSQL Triggers : user lacks privilege or object not found: NEWROW.ID
我正在尝试在更新后在 hsql 中实现触发器
我有一个 table 称为组件 table 并更新 table 我想使用插入触发器后将其记录在另一个 table 中,为此我正在做
CREATE TABLE IF NOT EXISTS "component"(
"id" INTEGER IDENTITY,
"name" VARCHAR(100),
"configuration" LONGVARCHAR,
"owner_id" INTEGER );
CREATE TABLE IF NOT EXISTS "component_audit"(
"id" INTEGER IDENTITY,
"component_id" INTEGER ,
"action" VARCHAR(20),
"activity_time" BIGINT,
"user_id" INTEGER,
FOREIGN KEY ("component_id") REFERENCES "component"("id") ON UPDATE RESTRICT ON DELETE CASCADE
);
CREATE TRIGGER trig AFTER INSERT ON "component"
REFERENCING NEW ROW AS newrow
FOR EACH ROW
INSERT INTO "component_audit" ("id","component_id","action","activity_time","user_id")
VALUES (DEFAULT, 1, newrow.id, 123, 1);
在 运行 HSQL 抛出错误
Caused by: org.hsqldb.HsqlException: user lacks privilege or object
not found: NEWROW.ID
这是因为我的 id 列在 "id" 中,因为我需要它的小写字母(默认情况下 HSQLDB 是大写的)
如何传递变量替换?
只需使用与 CREATE TABLE 语句中相同的命名即可。
CREATE TRIGGER trig AFTER INSERT ON "component"
REFERENCING NEW ROW AS newrow
FOR EACH ROW
INSERT INTO "component_audit" ("id","component_id","action","activity_time","user_id")
VALUES (DEFAULT, 1, newrow."id", 123, 1);
我正在尝试在更新后在 hsql 中实现触发器 我有一个 table 称为组件 table 并更新 table 我想使用插入触发器后将其记录在另一个 table 中,为此我正在做
CREATE TABLE IF NOT EXISTS "component"(
"id" INTEGER IDENTITY,
"name" VARCHAR(100),
"configuration" LONGVARCHAR,
"owner_id" INTEGER );
CREATE TABLE IF NOT EXISTS "component_audit"(
"id" INTEGER IDENTITY,
"component_id" INTEGER ,
"action" VARCHAR(20),
"activity_time" BIGINT,
"user_id" INTEGER,
FOREIGN KEY ("component_id") REFERENCES "component"("id") ON UPDATE RESTRICT ON DELETE CASCADE
);
CREATE TRIGGER trig AFTER INSERT ON "component"
REFERENCING NEW ROW AS newrow
FOR EACH ROW
INSERT INTO "component_audit" ("id","component_id","action","activity_time","user_id")
VALUES (DEFAULT, 1, newrow.id, 123, 1);
在 运行 HSQL 抛出错误
Caused by: org.hsqldb.HsqlException: user lacks privilege or object not found: NEWROW.ID
这是因为我的 id 列在 "id" 中,因为我需要它的小写字母(默认情况下 HSQLDB 是大写的) 如何传递变量替换?
只需使用与 CREATE TABLE 语句中相同的命名即可。
CREATE TRIGGER trig AFTER INSERT ON "component"
REFERENCING NEW ROW AS newrow
FOR EACH ROW
INSERT INTO "component_audit" ("id","component_id","action","activity_time","user_id")
VALUES (DEFAULT, 1, newrow."id", 123, 1);