Sqlserver 又遇视图带*号

本文讲述了在更新数据库视图时遇到的问题及解决方案。作者在修改视图时遇到了由于源表结构变更导致的错误,并分享了三种刷新视图元数据的方法,避免了因视图使用*而导致的潜在问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天页面上加了一个查询,然后测试的时候,一点就报错了。不就一张表嘛,朗格会报错?结果一步步看了代码,原来的查询已经被注释了,新的查询是返回了一个视图。

我以为是写好了固定的返回字段,加一个字段就好了,然后看到视图的时候,感觉人都不好了,曾经给同事们说过视图不能加*,要坑人的,正准备找谁干的,结果想起这个项目是刚接手别人的,哎。。。一股蛋蛋的忧伤。。。

这玩意【a.*】,对就是这玩意。

 

当视图引用的表对象修改后,视图的元数据可能就过时了,如:在视图定义中引用的列的宽度,在刷新元数据前的宽度可能不会生效(主要是视图使用*的坑,必须刷新视图,否则源表删除了字段会报错,源表加了字段显示不出来,条件查询的时候也会报错

 

有三种办法

1.用脚本Alter视图一下
2.exec sp_refreshview '视图名称'
3.exec sys.sp_refreshsqlmodule @name='视图名称'

第一个存储过程只用于刷新视图,第二个存储过程可以用到存储过程,触发器,函数,视图。

 

写星号真心不提倡。。。求免坑。。。

 

<think>嗯,用户想用PowerDesigner根据现有的SQL语句生成ER图,我得先回忆一下相关的步骤。首先,我记得PowerDesigner有一个逆向工程的功能,可以从数据库或者SQL脚本生成模型。那具体步骤应该是怎样的呢? 可能需要先打开PowerDesigner,然后选择文件里的反向工程选项。比如在菜单里找File -> Reverse Engineer -> Database,这样应该会弹出配置窗口。然后用户需要选择数据库类型,比如MySQL,因为引用里提到了MySQL的导出。这时候可能需要配置数据库连接,但如果用户已经有SQL脚本的话,可能需要连接实际数据库,而是直接导入脚本文件。 接下来,用户需要指定SQL脚本的位置,所以在配置数据库类型后,应该有一个选项让用户选择脚本文件。可能是在Database Reverse Engineering的窗口里,设置好数据库类型后,选择使用脚本文件,然后浏览到本地的SQL文件。导入后,PowerDesigner会解析SQL中的表结构和关系,生成对应的ER图。 另外,引用里提到导入现有本地SQL脚本生成ER模型图,所以步骤应该是:建一个物理数据模型,选择对应的DBMS,然后通过逆向工程导入SQL文件。生成后可能需要调整布局,让ER图更清晰。还有可能需要检查外键关系是否正确,或者手动调整一些表的位置。 用户可能到的问题包括数据库类型选错,导致语法解析错误。比如如果SQL是MySQL的,但选了SQL Server,可能会出错。另外,如果SQL脚本中有语法错误或者PowerDesigner支持的语句,也可能导致导入失败。这时候需要用户检查脚本的兼容性,或者尝试简化脚本再导入。 还有,用户可能需要导出生成的ER图,比如导出为图片或者PDF。这可以通过菜单中的导出功能实现。或者,他们可能需要进一步编辑模型,添注释或调整字段。 总之,步骤大概是:启动逆向工程,选择数据库类型,导入SQL脚本,生成模型,调整布局,最后导出或保存ER图。需要确保每个步骤都正确配置,特别是数据库类型和脚本路径。如果有问题,可能需要检查日志或错误提示,修正SQL脚本后再试。</think>[逐步解答] 根据您的需求,以下是使用PowerDesigner 16.5根据SQL语句生成ER图的完整操作流程: 1. **创建物理数据模型** - 启动PowerDesigner → 点击File → New Model - 选择`Physical Data Model`,设置DBMS类型为对应数据库(如MySQL 5.0)[^3] 2. **启动逆向工程** - 点击菜单栏Database → Reverse Engineer Database - 在弹出的窗口中选择`Using script files`选项[^1] 3. **导入SQL脚本** ```mermaid graph LR A[选择SQL文件] --> B[配置语法解析] B --> C[自动生成表结构] C --> D[建立实体关系] ``` - 点击添文件按钮导入本地SQL脚本 - 检查SQL语法与所选DBMS的兼容性[^2] 4. **生成ER图** - 完成导入后,所有表结构会自动显示在模型窗口 - 右键点击空白处选择`Auto-Layout`自动排列实体位置 - 通过工具栏调整实体颜色/字体等可视化参数 5. **验证关系完整性** - 检查外键关系是否完整映射 - 使用`Check Model`功能验证约束条件 - 通过View → Display Preferences调整关系线显示方式 [注意事项] - 如`Unrecognized SQL statement`错误,需检查SQL方言与DBMS设置是否匹配 - 复杂视图/存储过程可能需要手动调整模型 - 建议先清理SQL脚本中的注释和非DDL语句[^1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值