sql-server - 有没有办法检查对象是 SQL Server 中的表还是视图?
问题描述
我有一个视图,我正在更改为 SQL Server 中的表。
我正在删除视图,然后我的代码的下一部分将建立表格。
我的代码在我第一次运行时工作(当对象是视图时),但是当我需要多次运行它时,我得到了这个错误:
不能将 DROP VIEW 与“engineer.Well”一起使用,因为“engineer.Well”是一张表。使用删除表。
我一直在网上寻找,但找不到检查对象是表还是视图的方法,然后删除了该对象。
任何建议将不胜感激。
现在看起来是这样的,
IF OBJECT_ID('engineer.well') IS NOT NULL
BEGIN
DROP TABLE [engineer].[Well]
PRINT '<<< DROPPED TABLE Vendor >>>'
END
我正在尝试一种方法来检查对象是否是表格然后将其删除,或者检查它是否是视图然后删除它。
解决方案
您可以查询系统视图。
DECLARE @Type varchar(2)
SELECT @Type = type
FROM sys.objects o
JOIN sys.schemas s ON o.schema_id = s.schema_id
WHERE o.name = 'well'
AND s.name = 'engineer'
IF @Type = 'U'
BEGIN
DROP TABLE [engineer].[Well]
PRINT '<<< DROPPED TABLE Vendor >>>'
END
IF @Type = 'V'
BEGIN
DROP VIEW [engineer].[Well]
PRINT '<<< DROPPED VIEW Vendor >>>'
END
推荐阅读
- r - Stacked bar plot with points, but with different aestetics length - ggplot2
- payment-gateway - 如何获取 Chase Paymentech 托管SecureID 和hostedSecureAPIToken 以发出uID 初始化请求
- node.js - 有没有办法在 pm2 中显示我的进程的启动参数?
- javascript - 在 CSS 和 JS 中更改背景
- c# - LINQ 按实体 FieldName.Contains 或按包含的实体 FieldName.Contains 过滤
- javascript - 我怎么知道是什么导致了表单提交?
- python - Python中的递归数据类型
- rabbitmq - RabbitMQ 有不可见的队列消息
- javascript - 如何向此 HTML 元素添加两个 JavaScript 函数
- python - Python mysql.connector 插入不起作用