sql - 每当将患者记录插入患者表时,编写触发器以查找并填写患者的年龄
问题描述
在这个问题中,我必须在触发器的帮助下添加年龄值。请帮我解决这个问题。
create or replace trigger ia_patient
after insert on patient
for each row
enable
declare
age_value number(10);
begin
DBMS_OUTPUT.PUT_LINE('Please Insert Age');
update patient set age=&age_value where ??;
end;
我不确定在“哪里”之后应该写什么
解决方案
除非这是一个家庭作业问题,否则它真的没有多大意义,因为“年龄”取决于当前日期。
无论如何,看看这是否有帮助。
SQL> create table patient
2 (id number primary key,
3 date_of_birth date,
4 age number
5 );
Table created.
触发器:将年龄计算为 sysdate 和出生日期之间的月数除以 12(因为一年有 12 个月);当然,这只是一个近似值,但是——据我所知——你的任务不是正确计算年龄,而是学习如何使用触发器。
SQL> create or replace trigger ia_patient
2 before insert on patient
3 for each row
4 begin
5 :new.age := round(months_between(sysdate, :new.date_of_birth) / 12);
6 end;
7 /
Trigger created.
测试:
SQL> insert into patient (id, date_of_birth) values (2, date '2000-10-05');
1 row created.
SQL> select * from patient;
ID DATE_OF_BI AGE
---------- ---------- ----------
2 2000-10-05 20
SQL>
推荐阅读
- mysql - MySQL:不建议在没有服务器身份验证的情况下建立 SSL 连接。使用 SSL
- acumatica - Acumatica 和卡在运输中
- php - Laravel Horizon - 不同守卫的大门
- jquery - 迭代数组>填充选择框>从函数返回选择框作为html
- python - 如何在使用 vscode 调试时执行设置 python 虚拟环境的 shell 脚本(我需要对 launch.json 进行哪些更改)
- c# - 发送发布请求多部分表单数据。来自某些 Microsoft 服务的错误“超出行长限制 100”
- python - 在 Windows 中使用 pyinstaller 将 .py 文件转换为 .exe 时出错
- python - 将请求正文中的文件 POST 到 API
- vcpkg - 如何将 osgearth 与 vcpkg 一起使用
- asp.net-core - 将框架和本机运行时文件移动到子文件夹中