小さな事前登録データベースでは、次の SQL を使用して、特定のユーザー名が指定されるたびに VIEW を生成しています。私はこれを主に、システム管理者が重複した名前が登録されていると疑うたびにスナップショットを取得するために使用しています。これはめったに (1 時間に 1 回程度) 行われるため、データベース スキーマが過度に大きくなることはありません。
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);}
}