作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有电影执行表
movieexec与列
我想创建一个触发器来计算平均净值,如果它超过某个数量,比如 400000,那么就不可能再插入,并且应该显示一条错误消息。(name varchar2(20), address varchar2(20), cert# number(10), networth float)
我实现了以下代码:
CREATE OR REPLACE TRIGGER pronet
AFTER INSERT
ON movieexec
FOR EACH ROW
DECLARE netavg float;
BEGIN
SELECT AVG(networth) INTO netavg FROM movieexec;
IF(netavg>400000) THEN
RAISE_APPLICATION_ERROR(-20000,'average limit reached, cannot insert');
ENDIF;
END
但是出现以下错误
ERROR at line 7: PLS-00103: Encountered the symbol ";" when expecting one of the following:
if
5. DECLARE netavg float;
6. BEGIN
7. **SELECT AVG(networth) INTO netavg FROM movieexec;**
8. IF(netavg>400000) THEN
9. RAISE_APPLICATION_ERROR(-20000,'average limit reached, cannot insert');
请协助。
最佳答案
创建表为
CREATE TABLE movieexec
(
name VARCHAR2 (20),
address VARCHAR2 (20),
cert_no NUMBER (10),
networth FLOAT
);
并将触发器创建为
CREATE OR REPLACE TRIGGER pronet
AFTER INSERT
ON movieexec
FOR EACH ROW
DECLARE
netavg FLOAT;
BEGIN
SELECT AVG (networth)
INTO netavg
FROM movieexec;
IF (netavg > 400000)
THEN
raise_application_error (-20000,
'average limit reached, cannot insert'
);
END IF;
END;
/
关于SQL 触发器制造麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13340451/
想象我有字符串 abcD 我想提取abc出来了。我想到使用 ^(.+)D$ 然而,在匹配的group1中,不仅是abc ,但是abcD包含 - 如何制作.+不那么贪婪,所以D不包含在组中?我知道我可以
在使用 fabrication gem 时,我有一个循环依赖。在这里我会告诉你我做了什么。假设我有 2 个模型: class User < AR::Base has_many :messages
我是一名优秀的程序员,十分优秀!