SQL Server:视图的架构刷新和绑定

发表于:2009-11-02 11:01

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

#
SQL

  在数据库设计过程中,我们经常会有这样的情况下

  1. 某个基础表会被多个视图或者存储过程引用

  2. 修改基础表的时候,我们必须小心翼翼地,因为不会有任何提示告诉我们,如果继续修改,会不会造成视图或者存储过程有问题

  3. 即便我们知道有问题,我们也没有办法去让视图和存储过程刷新得到表最新的信息

  要解决这个问题,我这篇文章来详细讲解一下有关的技术

  --第一步:切换当前数据库上下文为

  USE MASTER

  GO

  --第二步:创建一个范例数据库

  CREATE DATABASE demo

  GO

  --第三步:切换当前数据库上下文为

  USE demo

  GO

  --第四步:创建一个范例表格,包含了三个字段

  CREATE TABLE TestTable(ID INT,Name VARCHAR(50),Address VARCHAR(50))

  GO

  --第五步:创建一个视图

  CREATE VIEW TestView

  AS

  SELECT ID,Name,Address FROM TestTable

  --第六步:查看表和视图的架构信息

  SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='TestView'

  SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='TestTable'

  --此时会发现视图三个字段与表的三个字段是一致的

  --第七步:假设我们需要对表的字段进行修改,例如修改Address字段的长度为256

  ALTER TABLE TestTable ALTER COLUMN Address VARCHAR(256)

  --第八步:我们再来查看表和视图的架构信息

  SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='TestView'

  SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='TestTable'

  --此时会发现,表中的Address已经修改为了256长度,而视图仍然是50。

  --这种情况将导致针对视图的查询出现一些意外情况

  --那么,怎么样让视图的架构信息得到刷新呢?

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号