LesezeichenAbonnierenRSS-Feed abonnieren
Flo1986
Calcite | Level 5

Hallo, 

ich habe ein kleines Problem.

Ich lösche den Inhalt einer Tabelle (xxx.test)

und schreibe danach ein neuen Inhalt (aus der "WORK.QUERY_FOR_XXX) rein.

 

Mein Problem ist nur, dass die Tabelle xxx.test den Inhalt der ID ignoriert und selber fortlaufende IDs erstellt.

Heißt ich schreibe einen Datensatz mit 300 Zeilen in die Tabelle und ich habe die ID 1-300

Dann lösche ich den Inhalt und schreibe erneut einen Datensatz mit 300 Zeilen in die Datenbank, nun fängt die erste ID bei 601 an, ich möchte aber das die ID immer wieder zurückgesetzt wird, beim reinschreiben in die Tabelle, und bei 1 anfängt.

 

Ist das möglich?

Ich hoffe ich hab mich verständlich ausgedrückt.

 

LIBNAME xxx ODBC  DATAsrc=xxx  SCHEMA=xxx IGNORE_READ_ONLY_COLUMNS=YES; 
PROC SQL;
DELETE FROM xxx.test;
QUIT;

PROC SQL;

INSERT INTO xxx.test

   SELECT id, 
          spalte2, 
          spalte3, 
          spalte4, 
      FROM WORK.QUERY_FOR_XXX t1;
QUIT;
4 ANTWORTEN 4
Flo1986
Calcite | Level 5

Danke für die schnelle Antwort,

 

Diese Fehlermeldung hält mich davon ab:

 

ERROR: The ODBC table xxx.test has been opened for OUTPUT. This table already exists, or there is a name conflict with an
existing object. This table will not be replaced. This engine does not support the REPLACE option.

jh_ti_bw
Obsidian | Level 7

Hallo Flo1986,

 

versuchs mal mit :

PROC SQL;

INSERT INTO xxx.test

   SELECT monotonic() as id, 
          spalte2, 
          spalte3, 
          spalte4, 
      FROM WORK.QUERY_FOR_XXX t1;
QUIT;

Außerdem befindest Du dich anscheinend in einer anderen Datenbank. Eventuell ist ID in XXX.test als autoincrement definiert. Dann müsstest Du die Tabellendefinition ändern.

Den Fehler, dass ODBC die Replace option nicht unterstütztz bekommst Du weg, indem die Tabelle xxx.Test vorher explizit löscht.

Proc delete data = xxx.Test; run
Data xxx.test;
  set 
  ....
run;

Viele Grüße

 

Jan

Flo1986
Calcite | Level 5

Die ID war als autoincrement definiert. Hätte ich auch selber drauf kommen können Frustrierte Smiley.

 

Vielen Dank für die Hilfe.

sas-innovate-2024.png

Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.

Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.

 

Register now!

Diskussionsstatistiken
  • 4 Antworten
  • 1516 Aufrufe
  • 1 Kudo
  • 3 in Unterhaltung