OceanBase 社区版本 4.2.1.2 MySql 类型数据库无法建立触发器吗?

【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】OB
【 使用版本 】4.2.1.2
【问题描述】建立触发器报错
【复现路径】问题出现前后相关操作

—sql
CREATE TABLE TESTPX

(

ID VARCHAR(3),

NAME VARCHAR(10),

AGE NUMBER(3,0)

);

CREATE TABLE TESTPX_V2

(

ID VARCHAR(3),

NAME VARCHAR(10),

AGE NUMBER(3,0)

);

select * from TESTPX ;

select * from TESTPX_V2 ;

–建立触发器
CREATE

TRIGGER TESTPX_AFTER_INSERT

AFTER INSERT

ON testpx

FOR EACH ROW

BEGIN

INSERT INTO TESTPX_V2(ID,NAME,AGE) VALUES(NEW.ID,NEW.NAME,NEW.AGE);

END

【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

根据您的描述,您在尝试创建触发器时遇到了语法错误。错误代码为 1064,SQLState 为 42000,提示信息显示为 “You have an error in your SQL syntax”,这通常意味着 SQL 语句的语法存在错误。

虽然 obdiag 工具主要用于诊断系统层面的问题,但我们可以尝试通过 obdiag 来收集一些基础信息,以便进一步分析可能存在的问题。由于这是一个 SQL 语法错误,obdiag 的根因分析功能并不适用,但我们可以通过日志采集来获取更多关于触发器定义的信息。

日志采集场景: 集群基础信息
日志采集命令: obdiag gather scene run --scene=observer.base

请您执行上述命令并提供采集到的日志压缩包。这将帮助我们了解您的集群配置和环境信息,从而更好地定位问题。

为了更准确地诊断问题,请您提供以下信息:

  1. 您使用的 OceanBase 版本号是多少?
  2. 您尝试创建触发器的具体 SQL 语句是什么?请确保去除敏感信息后再分享。
  3. 创建触发器时所在的数据库名称是什么?
  4. 是否有其他类似的 SQL 语句成功执行过?如果有,请提供相关信息。

具体信息可参考以下文档:

附上敏捷诊断工具 obdiag 使用帮助链接

你看一下 ob的mysql模式下 触发器怎么创建 要按照ob标准的语法建

https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000221524

1 个赞

触发器 content 只有一条语句时,不需要 begin content end;单独写 content 即可、

是的 begin end 对应多条语句 你可以看看官方的文档 里面有详细的介绍