如何查看日期?

How to check dates?

提问人:Pitt Bear 提问时间:10/24/2023 最后编辑:jarlhPitt Bear 更新时间:10/24/2023 访问量:70

问:

E-R diagram

我需要建议。 我想编写一个触发器,它将填充表中的。 是 SYSDATE。 根据表条目的时间,我希望 SQL 输入相应的 .Id_tariffElec_prodDate_measurementId_tariff

你知道怎么做吗?

我正在考虑编写一个 COMPOUND 触发器,以首先下载e_tariffs表的全部内容,然后在循环中将 date_measurement 与 Date_start 进行比较

SQL Oracle PLSQL

评论

2赞 Abra 10/24/2023
[数据库] 触发器在执行 INSERT、UPDATE 或 DELETE 之后执行。哪些 [数据库] 表应导致触发器执行?
0赞 Pitt Bear 10/24/2023
我希望在插入或更新后在Elec_prod表中输入id_tariff列
1赞 MT0 10/24/2023
“根据表条目的时间,我希望SQL输入适当的。”“适当”的逻辑是什么?请编辑您的问题,并附上一个最小的可重现示例:表格的语句(作为文本,而不是图像);解决问题的尝试,您的解决方案的问题/错误;对要实现的逻辑的完整英文(而非代码)描述;以及示例插入或更新语句的预期输出的详细信息。Id_tariffid_tariffCREATE TABLE

答:

0赞 SmellyCat 10/24/2023 #1

Oracle PL/SQL 语言参考来看,您需要类似的东西:

CREATE OR REPLACE TRIGGER EProd_Tariff_Add
AFTER INSERT OR UPDATE OF Date_measurement ON Elec_Prod
DECLARE
   Found_Tariff NUMBER(3)
BEGIN
   -- look up matching tariff
   SELECT ID_Tariff FROM E_tariffs
   INTO Found_Tariff 
   WHERE :NEW.Date_Measurement>=E_tariffs.Date_start
   FETCH FIRST 1  ROWS

   -- apply update
   UPDATE Elec_Prod Set ID_Tariff = Found_Tariff
END

评论

0赞 Pitt Bear 10/24/2023
这看起来还不错,谢谢
1赞 Alex Poole 10/24/2023
您需要添加 ,尤其是这样您就可以引用伪行。你需要一个子句,否则你将获取一个不确定的匹配行。不要 - 这将(如果有效)更新整个表;改为设置此行的值,使用 .你还缺少几个分号。(如果没有可用的关税,这将出错,但 OP 没有说明这是否会发生,或者如果发生该怎么办。FOR EACH ROW:NEWSELECTORDER BYUPDATE:NEW.ID_Tariff := Found_Tariff;