Zitat von
Garby:
im Prinzip kann man einen View nur updaten, wenn nur eine Tabelle abgefragt wird...
Die behaupten aber steif und fest, daß auch ein insert/updae
nicht auf eine Tabelle beschränkt ist ! Sofern man Trigger benutzt. Und die btroffenen Spalten dürfen nicht als NOT NULL definiert sein. Hier das Borland Beispiel:
SQL-Code:
CREATE TABLE Table1 (
ColA INTEGER NOT NULL,
ColB VARCHAR(20),
CONSTRAINT pk_table PRIMARY KEY(ColA)
);
CREATE TABLE Table2 (
ColA INTEGER NOT NULL,
ColC VARCHAR(20),
CONSTRAINT fk_table2 FOREIGN KEY REFERENCES Table1(ColA)
);
CREATE VIEW TableView AS
SELECT Table1.ColA, Table1.ColB, Table2.ColC
FROM Table1, Table2
WHERE Table1.ColA = Table2.ColA;
CREATE TRIGGER TableView_Delete FOR TableView BEFORE DELETE AS
BEGIN
DELETE FROM Table1
WHERE ColA = OLD.ColA;
DELETE FROM Table2
WHERE ColA = OLD.ColA;
END;
CREATE TRIGGER TableView_Update FOR TableView BEFORE UPDATE AS
BEGIN
UPDATE Table1
SET ColB = NEW.ColB
WHERE ColA = OLD.ColA;
UPDATE Table2
SET ColC = NEW.ColC
WHERE ColA = OLD.ColA;
END;
CREATE TRIGGER TableView_Insert FOR TableView BEFORE INSERT AS
BEGIN
INSERT INTO Table1 values (NEW.ColA,NEW.ColB);
INSERT INTO Table2 values (NEW.ColA,NEW.ColC);
END;
Nur was wird da genau jetzt gemacht