internal override List<Trigger> GetVersionTableTriggers(ExtractedTableMap table,VersionTypes versionType) { Type t = Pool.Mapping.GetTypeForVersionTable(table.TableName); List<Trigger> ret = new List<Trigger>(); string tmp = "AS \n"; for (int x=1;x<table.Fields.Count;x++) { ExtractedFieldMap efm = table.Fields[x]; tmp+="DECLARE VARIABLE "+efm.FieldName+" "+efm.FullFieldType+";\n"; } tmp+="BEGIN\n"; for (int x=1;x<table.Fields.Count;x++) { ExtractedFieldMap efm = table.Fields[x]; tmp+="\t"+efm.FieldName+" = new."+efm.FieldName+";\n"; } tmp+="\tINSERT INTO "+table.TableName+"("+table.Fields[0].FieldName; for (int x=1;x<table.Fields.Count;x++) { ExtractedFieldMap efm = table.Fields[x]; tmp+=","+efm.FieldName; } tmp+=") VALUES(null"; for (int x=1;x<table.Fields.Count;x++) { ExtractedFieldMap efm = table.Fields[x]; tmp+=",:"+efm.FieldName; } tmp+=");\nEND\n\n"; ret.Add(new Trigger(Pool.Translator.GetVersionInsertTriggerName(t,this), "FOR "+Pool.Mapping[t].Name+" ACTIVE AFTER INSERT POSITION 0", tmp)); ret.Add(new Trigger(Pool.Translator.GetVersionUpdateTriggerName(t,this), "FOR "+Pool.Mapping[t].Name+" ACTIVE AFTER UPDATE POSITION 0", tmp)); return ret; }
internal override List<Trigger> GetVersionTableTriggers(ExtractedTableMap table,VersionTypes versionType) { Type t = Pool.Mapping.GetTypeForVersionTable(table.TableName); List<Trigger> ret = new List<Trigger>(); string tmp = "AS \n BEGIN\n"; tmp+="\tINSERT INTO "+table.TableName+" SELECT null"; for(int x=1;x<table.Fields.Count;x++) { ExtractedFieldMap efm = table.Fields[x]; tmp+=",tbl."+efm.FieldName; } tmp+=" FROM INSERTED ins, "+Pool.Mapping[t].Name+" tbl WHERE "; for (int x=1;x<table.Fields.Count;x++) { ExtractedFieldMap efm = table.Fields[x]; if (efm.PrimaryKey) { tmp+="tbl."+efm.FieldName+" = ins."+efm.FieldName+" AND "; } } tmp=tmp.Substring(0,tmp.Length-4)+";"; tmp+="\nEND\n\n"; ret.Add(new Trigger(Pool.Translator.GetVersionInsertTriggerName(t,this), "ON "+Pool.Mapping[t].Name+" AFTER INSERT,UPDATE ", tmp)); return ret; }
internal abstract List<Trigger> GetVersionTableTriggers(ExtractedTableMap table,VersionTypes versionType);