我有一个与表关联的触发器。当我通过
DROP TRIGGER IF EXISTS myTrigger on dummytable;
postgres 告诉我
NOTICE: trigger "mytrigger" for table "dummytable" does not exist, skipping
DROP TRIGGER
当我使用虚拟表进行测试时,这是可行的。我试过了:
- 改变CaSe,
- 使触发器名称更长(真正的触发器是 17 个字符长)
测试时它总是毫无问题地下降。
这是 Linux 上的 Postgres 8.2。起作用的是添加引号:
DROP TRIGGER IF EXISTS "myTrigger" on dummytable;
为什么会这样,我无法理解,文档中没有任何内容提到该名称必须用引号引起来。
我错过了一些明显的东西吗?
您描述的行为是正确的并记录在案:http ://www.postgresql.org/docs/8.2/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS
如果触发器是使用双引号和特殊字符创建的,则必须使用相同的语法。
删除“” - 所以它不区分大小写。创建触发器时也请删除“”。