2017-01-22 2 views
-2

В настоящее время я изучаю взгляды ... но я видел, что есть вид типа «с возможностью проверки» (transact sql) ... Я добра смущен, что он делает ... Маленькая помощь пожалуйстаSQL view with check option

+0

Подсказка: просмотрите документацию для 'CREATE VIEW'. –

+0

@GordonLinoff Я проверил в w3schools, но там ничего нет ... – john

+0

@GordonLinoff все еще я проверил некоторые другие документы и даже получил больше путаницы ... похоже, w3schools объясняет это лучше – john

ответ

0

Это не тип вида, а параметр вида, который делает функцию представления как ограничение для операций вставки/обновления.
Вы можете вставить или записать запись в таблицу через представление, только если вставленная запись может быть получена с помощью представления.
Вы можете обновить запись таблицы через представление только в том случае, если обновленную запись можно получить с помощью представления.

PostgreSQL демо

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

Проверить обновленный ответ –