使用if和timestamp触发

时间:2011-12-15 12:05:14

标签: 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) 
                                  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_time日是否与今天相同......

如果那是相同的那么item_name是'是啊!'

这里需要帮助.. thx ... !!

1 个答案:

答案 0 :(得分:3)

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

您无法在触发器所在的同一个表上执行DML。

如果您要实现的目的是将帖子限制为每人每天1个帖子,则可以在user_id和day(post_time)上的表格上创建一个唯一键。