2017-01-22 7 views
-2

Ich studiere derzeit Ansichten ... aber ich sah, es gibt eine Ansicht Typ "mit Check-Option" (transact sql) ... Ich bin irgendwie verwirrt, was es tut ... Kleine Hilfe bitteSQL-Ansicht mit Check-Option

+0

Hinweis: Suchen Sie in der Dokumentation nach 'CREATE VIEW'. –

+0

@GordonLinoff Ich habe in w3schools eingecheckt, aber da ist nichts ... – john

+0

@GordonLinoff noch habe ich einige andere Dokumentation überprüft und sogar mehr verwirrt ... scheint wie w3schools erklärt es besser – john

Antwort

0

Es ist kein Ansichtstyp, sondern eine Ansichtsoption, die die Ansicht als Einschränkung für Einfüge-/Aktualisierungsvorgänge verwendet.
Sie können die Tabelle nur über die Ansicht einfügen oder aufzeichnen, wenn der eingefügte Datensatz von der Ansicht abgerufen werden kann.
Sie können einen Datensatz der Tabelle nur über die Ansicht aktualisieren, wenn der aktualisierte Datensatz von der Ansicht abgerufen werden kann.

PostgreSQL Demo

create table mytable (i int); 
create view myview as select i from mytable where i <= 10 with check option; 

insert into myview (i) values (1),(2),(3); 

19:26:00 [INSERT - 3 rows, 0.010 secs] Command processed ... 1 statement(s) executed, 3 rows affected, exec/fetch time: 0.010/0.000 sec [1 successful, 0 errors]

insert into myview (i) values (11); 

19:26:20 [INSERT - 0 rows, 0.000 secs] [Code: 0, SQL State: 44000] ERROR: new row violates check option for view "myview" Detail: Failing row contains (11). ... 1 statement(s) executed, 0 rows affected, exec/fetch time: 0.000/0.000 sec [0 successful, 1 errors]

update myview set i=i*10 where i=1; 

19:27:29 [UPDATE - 1 rows, 0.000 secs] Command processed ... 1 statement(s) executed, 1 rows affected, exec/fetch time: 0.000/0.000 sec [1 successful, 0 errors]

update myview set i=i*10 where i=2; 

19:27:42 [UPDATE - 0 rows, 0.000 secs] [Code: 0, SQL State: 44000] ERROR: new row violates check option for view "myview" Detail: Failing row contains (20). ... 1 statement(s) executed, 0 rows affected, exec/fetch time: 0.000/0.000 sec [0 successful, 1 errors]

+0

Überprüfen Sie die aktualisierte Antwort –