如何使触发器无法删除oracle中的表

时间:2015-06-22 16:00:21

标签: oracle triggers

我想在oracle中触发。

例如,我有一个表'测试'。并有8个数据。

我想,如果表中的数据测试不到10个数据。该表不能删除/删除

create or replace trigger lalala
before drop on system.schema
begin
if  count(*) table = <10
then
raise_application_error(-20001,'Table cannot be deleted');
end if;
end;
/

之前感谢

2 个答案:

答案 0 :(得分:1)

听起来你需要一个DDL触发器才能开始。

http://docs.oracle.com/cd/B19306_01/server.102/b14220/triggers.htm#i6061

你想要一个&#34;在下降之前&#34;触发器执行表中行数的计数,如果不满足某些条件则引发错误。

我建议从一个只引发错误的触发器开始,然后自定义它以首先检测表中的行数。

通过声明变量来检测表中的行数,然后:

select count(*)
into   my_variable
from   my_table;

答案 1 :(得分:0)

public static MessageDatabase getInstance(Context context) {
    if (MessageDatabase.instance == null || userID == 0) {
        MessageDatabase.instance = new MessageDatabase(context);
    }

    return MessageDatabase.instance;
}