Oracle无法创建触发器

使用SYS AS SYSDBA登录是不能创建触发器的,使用SCOTT用户登录可以创建触发器。

scott用户默认的密码是tiger。

如果没有scott用户可以创建一个,使用SYS AS DBA登录后键入一下命令即可:

create user scott identified by tiger;

欢迎大家关注/订阅我的微信公众号Code Art Online,我会在我的公众号分享个人见闻,发现生活趣味;这里不仅有0和1,还有是诗和远方↓↓↓

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 创建一个表 首先,我们需要创建一个表,以便在其上创建触发器。我们将创建一个名为“employees”的表,其中将包含员工的姓名、年龄和工资。 CREATE TABLE employees ( id INT PRIMARY KEY, name VARCHAR(50), age INT, salary INT ); 2. 创建一个触发器 现在,我们将创建一个触发器,以便在每次将新记录插入到“employees”表时,自动更新该表中所有员工的平均工资。触发器将在INSERT语句执行之前触发。 CREATE TRIGGER update_avg_salary BEFORE INSERT ON employees FOR EACH ROW BEGIN DECLARE total_salary INT; DECLARE total_count INT; DECLARE avg_salary INT; SELECT SUM(salary) INTO total_salary FROM employees; SELECT COUNT(*) INTO total_count FROM employees; SET avg_salary = total_salary / total_count; UPDATE employees SET salary = avg_salary WHERE id = NEW.id; END; 这个触发器包含以下几个关键部分: - BEFORE INSERT ON employees:指定了该触发器将在INSERT语句执行之前触发,并且只在“employees”表上运行。 - FOR EACH ROW:指定这个触发器将为每个插入的行运行一次。 - BEGIN…END:这是触发器的实际代码。 - DECLARE:这些语句声明变量,以便在代码中使用。 - SELECT…INTO:这些语句从“employees”表中选择数据并将其存储在变量中。 - SET:这个语句设置一个变量的值。 - UPDATE:这个语句将平均工资更新到新插入的行中。 3. 测试触发器 现在,我们可以测试我们的触发器。我们将向“employees”表中插入一些数据,并检查平均工资是否已更新。 INSERT INTO employees (id, name, age, salary) VALUES (1, '张三', 28, 5000); INSERT INTO employees (id, name, age, salary) VALUES (2, '李四', 32, 6000); INSERT INTO employees (id, name, age, salary) VALUES (3, '王五', 25, 4000); SELECT * FROM employees; 这将插入三个新的员工记录,并显示所有员工记录。我们可以看到,每个员工的工资都已更改为平均工资。 +----+------+------+------------+ | id | name | age | salary | +----+------+------+------------+ | 1 | 张三 | 28 | 5000 | | 2 | 李四 | 32 | 5000 | | 3 | 王五 | 25 | 5000 | +----+------+------+------------+ 这就是如何在Oracle创建触发器的基础知识。可以使用触发器自动执行许多常见的数据库任务,例如自动更新记录、插入日志记录等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值