Sql 带if和时间戳的触发器

Sql 带if和时间戳的触发器,sql,oracle,plsql,Sql,Oracle,Plsql,我的扳机有问题 这是我的扳机: create or replace trigger limit_post before insert on post for each row declare temp timestamp(6); begin temp := (select post_time from post where post_id = (select max(post_id)

我的扳机有问题

这是我的扳机:

  create or replace
  trigger limit_post
  before insert on post
  for each row
  declare 
     temp timestamp(6);
  begin
     temp := (select post_time 
                from post 
               where post_id = (select max(post_id) 
                                  from post 
                                 where user_id = :new.user_id));
     if day(:new.post_time) =  day(temp) 
     then
        :new.item_name := 'yeah!';
     end if;
  end limit_post;
那个触发器是假的。。。 我想创建一个触发器,可以检查该用户的最后一个post_时间日是否与今天的日期相同

如果是相同的,那么项目名称是“耶!”


这里需要帮助。。thx

我认为触发器会抛出一个:ORA-04091:table XXXX正在变异,触发器/函数可能看不到它

当触发器打开时,不能在同一个表上执行DML


如果您想要达到的目的是限制每人每天发布一篇文章,那么您可以在用户id和daypost时间的表上创建一个唯一的键。

找到了答案!!在为每一行插入post之前,应创建或替换触发器限制\u post 6;开始从post中选择post\U时间到temp,其中post\U id=从post中选择maxpost\U id,其中user\U id=:new.user\U id;如果to_char:new.post_time,'dd'==to_chartemp,'dd'那么:new.item_name:='yeah!';如果结束;末端限位杆;