首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sql触发器“列列表对此触发器类型无效”

Sql触发器“列列表对此触发器类型无效”
EN

Stack Overflow用户
提问于 2016-05-02 14:24:26
回答 2查看 3.9K关注 0票数 2

所以我想创建触发器:

代码语言:javascript
复制
CREATE TRIGGER add_primary_key
AFTER INSERT ON CAJ
FOR EACH ROW
WHEN (ID_CAJ IS NULL)
DECLARE
maximum NUMBER;
BEGIN
  maximum := SELECT MAX(ID_CAJ) FROM caj;
  if (maximum <> 0)
    UPDATE caj
    SET ID_CAJ = maximum + 1;
    WHERE CAJ_ID = NULL
    maximum = maximum +1;
END;

出现此错误:

代码语言:javascript
复制
"invalid NEW or OLD specification"
*Cause:    An invalid NEW or OLD specification was given for a column.
*Action:   Re-specify the column using the correct NEW or OLD specification.

你们知道吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-02 14:34:56

我想是先知吧。这是不正确的:

代码语言:javascript
复制
AFTER INSERT OF ID_CAJ
IN caj

插入行。列列表在这里不相关。它应该在表名上

代码语言:javascript
复制
AFTER INSERT ON CAJ

如果希望触发器设置新的主键(如果插入行具有NULL值),请参阅本主题,以了解使用SEQUENCE create table with sequence.nextval in oracle进行此操作的常用方法。

票数 6
EN

Stack Overflow用户

发布于 2016-05-02 14:30:02

我认为您不应该指定"OF ID_CAJ“,因为它是在insert触发器之后,它是关于行的,而不是列的

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36984827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档