创建SQL触发器时表名Transaction被识别为函数导致代码无法运行
问题原因
Transaction属于SQL内置保留关键字,是数据库事务相关语法的专用标识,编辑器会优先将其识别为原生语法元素而非用户创建的表,因此会出现标蓝、语法报错无法运行的情况。
修复方案
给作为表名使用的Transaction加上对应数据库支持的分隔标识符,强制数据库将其解析为用户自定义表对象即可,不同数据库的对应写法:
- SQL Server / Access 环境:用方括号包裹表名
CREATE TRIGGER soru2 ON [Transaction] AFTER insert AS
- MySQL / MariaDB 环境:用反引号包裹表名
CREATE TRIGGER soru2 ON `Transaction` AFTER insert AS
- PostgreSQL / Oracle 等遵循ANSI SQL标准的环境:用双引号包裹表名(注意该写法默认要求引号内的名称大小写和实际表名完全匹配)
CREATE TRIGGER soru2 ON "Transaction" AFTER insert AS
日常设计库表时,尽量避免使用SQL保留关键字作为表名、字段名,可以从根源上避免这类语法识别冲突问题。
内容的提问来源于stack exchange,提问作者Musa Tnkci
相关产品推荐
相关产品推荐

