gpt4 book ai didi

sql - 为什么 sysdate 中的一天在 plsql 触发器中不适用于星期一?

转载 作者:行者123 更新时间:2023-12-02 00:46:56 26 4
gpt4 key购买 nike

create or replace trigger trig1
before delete or insert or update on students
begin
if( To_char(sysdate,'day') = 'monday' then
raise_application_error(-20500,'table is secured');
end if;
end;

我创建了触发器,但它在周一不起作用,并且它在表上执行 DML 操作。我找到了一个解决方案 - 使用 dy 而不是 day - 但为什么呢?

最佳答案

有两个原因。

当您使用day时,结果会用空格填充到最长的名称,请尝试

SELECT '"'||To_char(sysdate, 'day')||'"'
FROM dual;

"monday "

使用'fmday'来避免这种情况。

然后 TO_CHAR() 的结果取决于当前用户 session NLS_DATE_LANGUAGE 设置。使用

To_char(sysdate, 'fmday', 'NLS_DATE_LANGUAGE = american') = 'monday'`

为了独立于当前用户 session 的设置。

关于sql - 为什么 sysdate 中的一天在 plsql 触发器中不适用于星期一?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46404193/

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