PDA

View Full Version : create or replace table



Robi
27-07-21, 08:38
Moin zusammen,

wir haben hier ein SQL (source für runsqlstm) mit


create table LIBNAME/FILENAME as(
select F1, f2, f3, f4
from DT1, DT2, DT3
where a = b and c = d and
e = f and g = h and
FELDx < 99 and
FELDy in(62, 63, 93) and
FELDz = 0 and
DT3.FELDx not in(select ABC from XYZ)
) with data


läuft schon ewig, funktioniert.

mach ich aus dem "create" ein "create or replace" bekomme ich
"Klauseln in derselben Definition sind nicht gültig."

Was bedeutet das? und viel wichtiger ... wie geht es richtig?

Danke

Fuerchau
27-07-21, 08:43
Weil ein "or replace" mit neuen Daten keinen Sinn macht.
Replace erstellt ja nur die Datei und kopiert die alten Daten zurück.
Dabei bleiben Indizes/Views dann erhalten.

Alternativ kannst du einen "... with no data" machen, was nur bei Feldänderungen dann Sinn macht.
Für die Daten machst du dann einen "delete ....; insert into ... select ... from ...;".

Robi
27-07-21, 08:48
Hab es nun mit


create table LIBNAME/FILENAME as(
select F1, f2, f3, f4
from DT1, DT2, DT3
where a = b and c = d and
e = f and g = h and
FELDx < 99 and
FELDy in(62, 63, 93) and
FELDz = 0 and
DT3.FELDx not in(select ABC from XYZ)
) with data ON REPLACE DELETE ROWS


gelöst

Danke


Der replace ist verwirrend,
er bezieht sich auf die Dateistruktur, nicht auf die Daten.

Das war mir nicht so klar.