Seite 1 von 1

SQL Befehl für kompletten Satz leeren [ERLEDIGT]

Verfasst: Mo, 07. Sep 2020 11:35
von Manfred
ich arbeite derzeit mit dem ADS und möchte ein paar Pauschalroutinen in SQL darstellen. Bisher habe ich es so gemacht, das ich einen zu löschenden Satz komplett leere und dann DELETE kennzeichne. So kann ich ihn im zweifelsfalle wieder benutzen, wenn ein neuer Satz angelegt werden soll. Das habe ich mit einer Methode gemacht, die alle Felder automatisch geleert hat mit entsprechenden Leer, oder 0 oder .F. Werten. Gibt es da was für SQL, oder muß man wirklich alle Felder angeben mit den Leerwerten, die jedesmal benötigt werden? Bei einem Satz ist das ok, aber es kann auch vorkommen, das ganze Satzpakete geleerte und dann gelöscht werden müssen. Das stelle ich mir unter SQL dann wesentlich schneller vor.

Re: SQL Befehl für kompletten Satz leeren

Verfasst: Mo, 07. Sep 2020 11:48
von Tom
Ich weiß, Du magst solche Gegenfragen nicht, aber ich kann sie mir einfach nicht verkneifen: Warum zur Hölle sollte man das tun? Wenn man mit dateibasierten Datenbanken arbeitet, ist der Benefit halbwegs klar, aber bei einem SQL-Server gewinnst Du nichts. Der sorgt selbst dafür, dass der Platz optimal verwendet wird, und das Datensatzrecycling ist hier wirklich das, was es ist, nämlich ein Anachronismus. Außerdem denkst Du offenbar immer noch satzorientiert, und diese Denke musste Du bei SQL sowieso loswerden.

Re: SQL Befehl für kompletten Satz leeren

Verfasst: Mo, 07. Sep 2020 12:07
von Manfred
Hi Tom,
ich kann Dir jetzt nicht folgen. Es sind noch DBF Dateien und das Programm muß noch weiter auf SQL umgestellt werden. Ich versuche jetzt nur Schritt für Schritt den Vorgang zu vollziehen. Für Routinen, die mir derzeit klar und einfach erscheinen dafür fange ich an. Für kompliziertere Stellen, muß ich halt meine Erfahrung noch härten und abwarten, bis ich genau verstehe, was ich wie gegen SQL tauschen kann. Ich muß es ja auch später noch nachvollziehen können, was ich hier und heute gestrickt habe.

Re: SQL Befehl für kompletten Satz leeren

Verfasst: Mo, 07. Sep 2020 12:25
von Tom
Ah, okay, das hatte ich nicht auf dem Schirm. Wenn Du mit einem SQL-Server wie PostGre, MySQL, Microsoft SQL usw. arbeiten würdest, wäre das konzeptionell Unfug, Datensätze zu recyceln, das habe ich gemeint. Aber das machst Du nicht, Du bist ja mit dem ADS unterwegs.

Zu Deiner Frage: Es gibt meines Wissens kein Statement, dass das out-of-the-box kann, das wäre ein "UPDATE ... SET ... WHERE" unter Angabe aller Spalten. Und ein guter Kandidat für eine STORED PROC. :wink:

Re: SQL Befehl für kompletten Satz leeren

Verfasst: Mo, 07. Sep 2020 12:40
von Manfred
damit kenne ich mich überhaupt noch nicht aus. (Stored Proc)

Re: SQL Befehl für kompletten Satz leeren

Verfasst: Mo, 07. Sep 2020 13:47
von nightcrawler

Code: Alles auswählen

create table test(id integer, text char(30), text2 char(30), datum date);
create trigger trig_del on test after delete
begin
  update test set id=null, text=null, text2=null, datum=null where rowid=::stmt.TrigRowId;
end;