我有一些脚本正在使用SQL Security Invoker选项创建视图。
代码脚本如下:
CREATE SQL SECURITY INVOKER VIEW viewOne AS
SELECT
m1.id,
sio.source as finalStep
FROM stepIO sio JOIN step s ON(sio.step_id=s.id) JOIN
medium m1 ON(m1.version=s.model_id) JOIN coefficient c
ON(c.id=m1.id)
WHERE sio.direction='O' AND sio.source NOT IN (
SELECT
idref
FROM stepIO sio JOIN step s ON(sio.step_id=s.id) JOIN
medium m ON(m.version=s.model_id) JOIN coefficient c
ON(c.id=m.id)
WHERE c.belongs_to_container_id=1 and m1.model_name=m.model_name) AND
c.belongs_to_container_id=1;
在Intellij中运行测试时,出现此错误。
org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "
CREATE SQL[*] SECURITY INVOKER VIEW viewOne AS
//
//
c.belongs_to_container_id=1; "expected "OR, FORCE, VIEW, ALIAS, SEQUENCE, USER, TRIGGER, ROLE, SCHEMA, CONSTANT, DOMAIN, TYPE, DATATYPE, AGGREGATE, LINKED, MEMORY, CACHED, LOCAL, GLOBAL, TEMP, TEMPORARY, TABLE, PRIMARY, UNIQUE, HASH, SPATIAL, INDEX";
似乎将SQL SECURITY INVOKER
拒绝为错误的SQL语法。这怎么可能?
答案 0 :(得分:1)
MySQL是一个数据库,H2是另一个数据库。
两者的SQL语法都不同。
H2中没有CREATE SQL SECURITY INVOKER VIEW ...
这样的东西。参见H2 documentation。