带有检查选项的SQL视图

时间:2017-01-22 15:22:17

标签: sql-server tsql

我目前正在研究视图......但是我看到有一个视图类型“带有检查选项”(transact sql)...我很感到困惑它做了什么......请帮助不多

1 个答案:

答案 0 :(得分: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 [插入 - 3行,0.010秒]处理命令... 1   执行的语句,3行受影响,执行/获取时间:0.010 / 0.000   sec [1成功,0错误]

insert into myview (i) values (11);
  

19:26:20 [INSERT - 0行,0.000秒] [代码:0,SQL状态:44000]   错误:新行违反了查看选项&#34; myview&#34;详情:   失败的行包含(11)。 ......执行1条语句,0行   受影响的,执行/获取时间:0.000 / 0.000秒[0成功,1错误]

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

19:27:29 [UPDATE - 1行,0.000秒]命令已处理... 1   执行的语句,1行受影响,执行/获取时间:0.000 / 0.000   sec [1成功,0错误]

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

19:27:42 [UPDATE - 0 rows,0.000 secs] [代码:0,SQL状态:44000]   错误:新行违反了查看选项&#34; myview&#34;详情:   失败的行包含(20)。 ......执行1条语句,0行   受影响的,执行/获取时间:0.000 / 0.000秒[0成功,1错误]