Aktualisierbare Views in SQL (MySQL )
Vorbereitung
Zum Nachvollziehen der folgenden Beispiele kann das folgende Skript in einen MySQL-Klienten kopiert werden. Der Inhalt dieses Skripts kann aber ansonsten ignoriert werden. Bei Kopieren ist darauf zu achten, nur genau den Text von »DROP« bis zum letzten »;« zu kopieren und dann die Eingabetaste zu drücken.
- Skript (MySQL )
DROP SCHEMA S; CREATE SCHEMA S; USE S;
CREATE TABLE ZAHL ( I VARCHAR ( 255 ), DE VARCHAR ( 255 ), EN VARCHAR ( 255 ) );
INSERT INTO ZAHL ( I, DE, EN ) VALUES ( '0', 'NULL', 'ZERO' );
INSERT INTO ZAHL ( I, DE, EN ) VALUES ( '1', 'EINS', 'ONE' );
INSERT INTO ZAHL ( I, DE, EN ) VALUES ( '2', 'ZWEI', 'TWO' );
SELECT * FROM ZAHL;
Aktualisierbare Ansichten
Es ist auch möglich, Basistabellen über Ansichten zu verändern.
- Konsole
CREATE VIEW ZAHLVIEW AS
SELECT I, DE, EN FROM ZAHL;UPDATE ZAHLVIEW SET DE = 'ZWO' WHERE I = '2';
Rows matched: 1 Changed: 1 Warnings: 0
SELECT * FROM ZAHL;
+------+------+------+
| I | DE | EN |
+------+------+------+
| 0 | NULL | ZERO |
| 1 | EINS | ONE |
| 2 | ZWO | TWO |
+------+------+------+DELETE FROM ZAHLVIEW WHERE I = '1';
SELECT * FROM ZAHL;
+------+------+------+
| I | DE | EN |
+------+------+------+
| 0 | NULL | ZERO |
| 2 | ZWO | TWO |
+------+------+------+INSERT INTO ZAHLVIEW VALUES ( '4', 'VIER', 'FOUR' );
SELECT * FROM ZAHL;
+------+------+------+
| I | DE | EN |
+------+------+------+
| 0 | NULL | ZERO |
| 2 | ZWO | TWO |
| 4 | VIER | FOUR |
+------+------+------+
Allerdings sind nicht alle Ansichten „aktualisierbar“. Wenn die Ansicht beispielsweise mit »DISTINCT« erzeugt wurde, dann ist eine Aktualisierung nicht möglich.