Community deutschsprachiger SAS-Anwender und -Programmierer

Antworten
Dies ist eine offene Gruppe. Melden Sie sich an und klicken Sie auf die Schaltfläche „Gruppe beitreten“, um Mitglied zu werden und damit zu beginnen, Beiträge in dieser Gruppe zu veröffentlichen.
Highlighted
New Contributor
Beiträge: 4
Fortlaufende ID einer Tabelle zurücksetzen

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;
Esteemed Advisor
Beiträge: 6.646
Re: Fortlaufende ID einer Tabelle zurücksetzen

Was hält Dich davon ab, einfach

data xxx.test;
set work.query_for_xxx (keep=id spalte2 spalte3 spalte4);
run;

zu machen?

---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers
New Contributor
Beiträge: 4
Re: Fortlaufende ID einer Tabelle zurücksetzen

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.

Contributor
Beiträge: 24
Re: Fortlaufende ID einer Tabelle zurücksetzen

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

New Contributor
Beiträge: 4
Re: Fortlaufende ID einer Tabelle zurücksetzen

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

 

Vielen Dank für die Hilfe.