在一个小型预注册数据库上,只要给出特定用户名,我就使用以下 SQL 生成一个 VIEW。每当系统管理员怀疑重复名称正在注册时,我主要使用它来获取快照。这将很少进行(最多每小时一次),因此数据库模式不应该变得过大。
CREATE OR REPLACE TRIGGER upd_on_su_entry
AFTER UPDATE OR INSERT
ON PRE_REG_MEMBER
FOR EACH ROW
BEGIN
IF :new.MEMBER_NAME = 'SysAdmin Dup Tester' THEN
EXECUTE IMMEDIATE 'CREATE OR REPLACE VIEW mem_n AS SELECT :old.MEMBER_NAME, COUNT(:old.MEMBER_NAME) FROM MEMBER GROUP BY MEMBER_NAME';
END IF;
END;
然而,这似乎是一种臃肿、低效和错误的工作方式(根据我的管理员)。这里有根本错误吗?我可以通过其他方式拍摄等效快照吗?
我对 SQL 很陌生,所以请多多包涵。
另外,我想将视图用作:
public void dups()throws Exception
{
Calendar cal = Calendar.getInstance();
jt.setText("Duplicate List at : "+ cal.getTime());
try{
rs=stat.executeQuery("select * from upd_on_su_entry");
while(rs.next())
{
jt.append(rs.getString("MEMBER_NAME")+"\t");
jt.append(rs.getString(2)+"\t");
}
}
catch(Exception e){System.out.print("\n"+e);}
}