嵌入式数据库sqlite3子句和函数的使用基础(06)
-- 创建一个简单的存储过程,用于计算某个部门的平均工资
CREATE TABLE IF NOT EXISTS department (
dept_no char(5),
dept_name varchar(40)
);
CREATE TABLE IF NOT EXISTS salaries (
emp_no int,
dept_no char(5),
salary int
);
-- 创建一个触发器,用于在新增或更新部门工资时自动更新部门的平均工资
CREATE TRIGGER IF NOT EXISTS update_dept_avg_salary
AFTER INSERT OR UPDATE ON salaries
FOR EACH ROW
BEGIN
UPDATE department SET avg_salary = new_avg_salary(dept_no) WHERE dept_no = NEW.dept_no;
END;
-- 定义一个函数,用于计算特定部门的平均工资
CREATE FUNCTION IF NOT EXISTS new_avg_salary(dept_no char(5))
RETURNS INTEGER
AS $$
BEGIN
RETURN (SELECT AVG(salary) FROM salaries WHERE salaries.dept_no = dept_no);
END;
$$
LANGUAGE plpgsql;
这个例子展示了如何在PostgreSQL中创建存储过程、触发器和函数,以计算特定部门的平均工资。这里使用了PostgreSQL的PL/pgSQL语言,它类似于SQLite中的SQL函数。代码首先创建了必要的表,然后定义了一个触发器,在插入或更新工资表时更新部门的平均工资。最后,定义了一个函数来计算平均工资,该函数在触发器中被调用。
评论已关闭