Wir wollen unsere DDS auf saubere SQL-Strukturen umstellen, damit die Datenbankzugriffe über c#-Connectoren 1:1 mit SQL-DB's sind.

Nun haben wir folgendes Problem:

Wenn wir die Identity-Spalte mit ALWAYS definieren, dann fahren wir mir Kontruckten wie "Insert into DB_neu select * from DB_alt" an die Wand. Gleiches Problem haben wir in einem RPG mit embedded SQL bei "insert into DB values( :ds_DB)" [Anm: :ds_DB ist eine externe DS bezogen auf die DB].

Wenn wir die Identity-Spalte mit BY DEFAULT definieren, haben wir die beiden obigen Probleme nicht, aber es wird keine Identity erzeugt, da der Werte des Identity-Feldes nicht DEFAULT ist.

Kann uns jemand einen Tipp geben, wie wir dieses Problem umgehen können?

Kann man z.B. per Trigger den Wert des Identity-Feldes auf DEFAULT [Anm: NULL und x'00' geht nicht] setzen, dann würde der BY DEFAULT sauber funktionieren.

Oder kann man bei ALWAYS Felder per Trigger o.ä. wegnehmen?

Alternative wäre eine Sequenz und die per Trigger zu übernehmen, dann bekommen wir aber mit IDENTITY_VAL_LOCAL() nicht die Ident zurück sondern müßen erst ein SQL-Statement nach schieben um per Select über den Unique-Key die ID wieder auslesen.

Vielen Dank für jeden Tipp

Edgar