gpt4 book ai didi

SQL 触发器制造麻烦

转载 作者:搜寻专家 更新时间:2023-10-30 20:19:29 25 4
gpt4 key购买 nike

我有电影执行表

movieexec
与列

(name varchar2(20), address varchar2(20), cert# number(10), networth float)

我想创建一个触发器来计算平均净值,如果它超过某个数量,比如 400000,那么就不可能再插入,并且应该显示一条错误消息。

我实现了以下代码:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com