MyCodeBucket
Benutzer
- Beiträge
- 7
Hallo zusammen.
Ich stehe vor folgendem Problem:
Auf einem MS SQL 2014 soll der Inhalt von zwei Spalten (attrib1,attrib3) in verschiedenen Tabellen gelöscht/überschrieben werden. die Tabellen identifiziere ich wie folgt:
SELECT TABLE_NAME, COLUMN_NAME
FROM database.INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME = 'attr1'
ORDER BY TABLE_NAME
SELECT TABLE_NAME, COLUMN_NAME
FROM database.INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME = 'attr3'
ORDER BY TABLE_NAME
Diese Tabellen starten stets mit folgenden Zeichen: zTM...
Um die Einträge in den Spalten 'attrib1' und 'attrib3' zu "anonymisieren" (hierbei handelt es sich um Benutzerdaten ...created by und last changed by...) verwende ich manuell für alle Tabellen folgende Statements:
UPDATE [database].[dbo].[zTM...] SET attr1 ='ANON'
UPDATE [database].[dbo].[zTM...] SET attr3 ='ANON'
So weit zu meinem "überragenden" rudimentären Wissen zu SQL, anspruchsvoller kann ich nicht
Ich würde das Ganze gerne in einem SQL Statement ausführen und als StoredProcedure vorhalten.
Das Problem ist, dass zu den Tabellen stets neue hinzukommen können und ich somit die "Identifikation" aller Tabellen mit den betreffenden Spalten durchführen muss.
Bin ich da von meinem Ansatz her schräg oder gibt es eine einface Lösung?
Ich möchte in den Tabellen die Werte einfach gelöscht oder mit einem Standardwert befüllt haben.
Kann man evt. einen Trigger basteln, der die Ändeung in den Spalten erkennt und dann den Wert automatisch löscht oder umschreibt?
Da eine Java Applikation in die Datenbank schreibt traue ich mich nicht, die Spalten einfach auf 'read only' zu setzen, da ich nicht weiss wie die Applikation beim schreiben reagiert.
Hat jemand eine Idee, wie ich das umsetzen kann? Für eure Hilfe wäre ich dankbar, ich hab keine Ahnung von SQL, würde auch die Finger davon lassen, oder es eben lernen, aber dazu fehlt mir aktuell die Zeit.
Ich stehe vor folgendem Problem:
Auf einem MS SQL 2014 soll der Inhalt von zwei Spalten (attrib1,attrib3) in verschiedenen Tabellen gelöscht/überschrieben werden. die Tabellen identifiziere ich wie folgt:
SELECT TABLE_NAME, COLUMN_NAME
FROM database.INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME = 'attr1'
ORDER BY TABLE_NAME
SELECT TABLE_NAME, COLUMN_NAME
FROM database.INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME = 'attr3'
ORDER BY TABLE_NAME
Diese Tabellen starten stets mit folgenden Zeichen: zTM...
Um die Einträge in den Spalten 'attrib1' und 'attrib3' zu "anonymisieren" (hierbei handelt es sich um Benutzerdaten ...created by und last changed by...) verwende ich manuell für alle Tabellen folgende Statements:
UPDATE [database].[dbo].[zTM...] SET attr1 ='ANON'
UPDATE [database].[dbo].[zTM...] SET attr3 ='ANON'
So weit zu meinem "überragenden" rudimentären Wissen zu SQL, anspruchsvoller kann ich nicht
Ich würde das Ganze gerne in einem SQL Statement ausführen und als StoredProcedure vorhalten.
Das Problem ist, dass zu den Tabellen stets neue hinzukommen können und ich somit die "Identifikation" aller Tabellen mit den betreffenden Spalten durchführen muss.
Bin ich da von meinem Ansatz her schräg oder gibt es eine einface Lösung?
Ich möchte in den Tabellen die Werte einfach gelöscht oder mit einem Standardwert befüllt haben.
Kann man evt. einen Trigger basteln, der die Ändeung in den Spalten erkennt und dann den Wert automatisch löscht oder umschreibt?
Da eine Java Applikation in die Datenbank schreibt traue ich mich nicht, die Spalten einfach auf 'read only' zu setzen, da ich nicht weiss wie die Applikation beim schreiben reagiert.
Hat jemand eine Idee, wie ich das umsetzen kann? Für eure Hilfe wäre ich dankbar, ich hab keine Ahnung von SQL, würde auch die Finger davon lassen, oder es eben lernen, aber dazu fehlt mir aktuell die Zeit.