介绍
这篇文章主要为大家展示了“mysql如何确保视图的一致性”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“mysql如何确保视图的一致性”这篇文章吧。
具体如下:
我们有的时候,会创建一个视图来显示表的部分数据。我们知道,简单视图是的,因此可以更新通过视图不可见的数据,但是此更新会使的视图不一致。为了确保视图的一致性,在创建或修改视图时使用与检查选项可更新子句。我们来看下检查选项可更新子句的语法结构:
CREATE 或是REPLACE VIEW view_name 作为 ,select_statement ,WITH CHECK 选择;
我们要注意,将分号(,)放与检查选项在子句的末尾,而不是在选择语句的末尾来定义视图。完事我们来尝试根据员工表创建一个名为vps的视图,以显示其职位为VP的员工,例如营销副总裁和副总裁销售:
CREATE 或是REPLACE VIEW vps SELECT 才能; ,,,employeeNumber, ,,,姓, ,,,firstname, ,,,职务高低, ,,,扩展, ,,,的邮件, ,,,officeCode, ,,reportsTo ,从 ,,,员工 ,在哪里 ,,,jobTitle LIKE & # 39; % % & # 39;副总裁;
接下来,我们使用以下语句从vps视图中查询数:
mysql>, SELECT *,得到vps; + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + | |,employeeNumber lastname |, firstname |, jobtitle ,, |, extension |, email ,,,,,,, |, officeCode | reportsTo | + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + |,,,,,,1056,|,Hill ,, |, Mary ,, |, VP Sales ,, |, x4611 ,, |, mary.hill@yiibai.com |, 1,,,,, |,,, 1002 | |,,,,,,1076,|,Firrelli |, Jeff ,, |, VP Marketing |, x9273 ,, |, jfirrelli@yiibai.com |, 1,,,,, |,,, 1002 | + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + 2,rows 拷贝设置
因为vps是一个简单的视图,因此它是可更新的,所以,我们通过vps视图将一行员工数据信息插入:
INSERT INTO vps (employeeNumber、名、姓、职务高低、扩展,电子邮件,officeCode, reportsTo) 值(1703 & # 39;莉莉# 39;,& # 39;布什# 39;,& # 39;IT 经理# 39;,& # 39;x9111& # 39;, & # 39; lilybush@yiiibai.com& # 39;, 1, 1002年),
我们要注意,新创建的员工通过vps视图不可见,因为她的职位是它经理,而不是副总裁。使用以下选择语句来验证它:
SELECT *,得到employees WHERE employeeNumber=1703;
执行上面语句,得到以下结果:
+ - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + | |,employeeNumber lastName |, firstName |, extension |, email ,,,,,,,, |, officeCode |, reportsTo |, jobTitle ,,,,, | + - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + |,,,,,,1703,|,Bush ,, |, Lily ,, |, x9111 ,, |, lilybush@yiiibai.com |, 1,,,,, |,,, 1002, |, IT Manager ,,,, | |,,,,,,1702,|,Gerard , |, Martin , |, x2312 ,, |, mgerard@gmail.com ,, |, 4,,,,, |,,, 1102, |, Sales Rep ,,,, | |,,,,,,1625,|,Kato ,, |, Yoshimi , |, x102 ,, |, ykato@gmail.com ,,, |, 5,,,,, |,,, 1621, |, Sales Rep ,,,, | |,,,,,,1621,|,Nishi ,, |, Mami ,, |, x101 ,, |, mnishi@gmail.com ,, |, 5,,,,, |,,, 1056, |, Sales Rep ,,,,, |
但这可能不是我们想要的,因为通过vps视图暴露VP员工,而不是其他员工,所以,为了确保视图的一致性,用户只能显示或更新通过视图可见的数据,则在创建或修改视图时使用检查选项: