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;
Was hält Dich davon ab, einfach
data xxx.test;
set work.query_for_xxx (keep=id spalte2 spalte3 spalte4);
run;
zu machen?
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.
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
Die ID war als autoincrement definiert. Hätte ich auch selber drauf kommen können .
Vielen Dank für die Hilfe.
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.