Oracle Can';不创建触发器
我需要创建一个脚本来删除数据库中的一些数据,表没有级联约束,我没有编辑它们的权限。 因此,我试图创建一个触发器来模拟表上的级联删除(我将在脚本执行后删除它) 这是我的扳机:Oracle Can';不创建触发器,oracle,Oracle,我需要创建一个脚本来删除数据库中的一些数据,表没有级联约束,我没有编辑它们的权限。 因此,我试图创建一个触发器来模拟表上的级联删除(我将在脚本执行后删除它) 这是我的扳机: CREATE TRIGGER delete_workspace_on_delete_result BEFORE DELETE ON RESULT FOR EACH ROW BEGIN DELETE FROM WORKSPACE WHERE workspace_result_id = :old.id; END; / 我不
CREATE TRIGGER delete_workspace_on_delete_result
BEFORE DELETE ON RESULT
FOR EACH ROW
BEGIN
DELETE FROM WORKSPACE WHERE workspace_result_id = :old.id;
END;
/
我不明白为什么它不起作用,我只是遵循Oracle文档,但我有以下错误:
Error report -
ERROR: syntax error at or near "BEGIN"
Position: 87
我不习惯使用Oracle,但我自己找不到一种方法来实现这一点。我看不出有什么不对,它是有效的。尽管:
- 无法在Oracle 11g或更低版本上工作,因为触发器名称太长(最多30个字符)
- 将在12c及以上温度下工作
- 考虑使用
创建或替换
;如果它存在,您尝试再次创建它,它将失败
SQL> CREATE TABLE workspace (workspace_result_id NUMBER);
Table created.
SQL> CREATE TABLE result (id NUMBER);
Table created.
SQL> CREATE TRIGGER delete_workspace_on_delete_result
2 BEFORE DELETE
3 ON RESULT
4 FOR EACH ROW
5 BEGIN
6 DELETE FROM WORKSPACE
7 WHERE workspace_result_id = :old.id;
8 END;
9 /
CREATE TRIGGER delete_workspace_on_delete_result
*
ERROR at line 1:
ORA-00972: identifier is too long
SQL> CREATE TRIGGER delete_workspace_on_del_result
2 BEFORE DELETE
3 ON RESULT
4 FOR EACH ROW
5 BEGIN
6 DELETE FROM WORKSPACE
7 WHERE workspace_result_id = :old.id;
8 END;
9 /
Trigger created.
SQL>
我看不出有什么不对劲,它是有效的。尽管:
- 无法在Oracle 11g或更低版本上工作,因为触发器名称太长(最多30个字符)
- 将在12c及以上温度下工作
- 考虑使用
创建或替换
;如果它存在,您尝试再次创建它,它将失败
SQL> CREATE TABLE workspace (workspace_result_id NUMBER);
Table created.
SQL> CREATE TABLE result (id NUMBER);
Table created.
SQL> CREATE TRIGGER delete_workspace_on_delete_result
2 BEFORE DELETE
3 ON RESULT
4 FOR EACH ROW
5 BEGIN
6 DELETE FROM WORKSPACE
7 WHERE workspace_result_id = :old.id;
8 END;
9 /
CREATE TRIGGER delete_workspace_on_delete_result
*
ERROR at line 1:
ORA-00972: identifier is too long
SQL> CREATE TRIGGER delete_workspace_on_del_result
2 BEFORE DELETE
3 ON RESULT
4 FOR EACH ROW
5 BEGIN
6 DELETE FROM WORKSPACE
7 WHERE workspace_result_id = :old.id;
8 END;
9 /
Trigger created.
SQL>