我偶尔会被迫使用MS-SQL,所以我对它的了解是基本的.我确信以下问题对于MS-SQL专家来说是件小事,但对我而言,这看起来真的像一个讨厌的bug:
假设我有一个简单的表格,其中包含一个人的姓氏,名字和电子邮件,如下所示:
CREATE TABLE dbo.people
(
lastName varchar(50) NULL,
firstName varchar(50) NULL,
email varchar(50) NULL
)
Run Code Online (Sandbox Code Playgroud)
现在我要创建一个视图,所以我有一些预先连接的字段,如下所示:
CREATE VIEW v_people AS
SELECT
people.*,
people.lastName + ' ' + people.firstName AS concatName
FROM people
Run Code Online (Sandbox Code Playgroud)
现在我注意到我忘记了电话号码字段,并改变了原始表格,但只有表格,而不是视图:
ALTER TABLE dbo.people ADD
phone varchar(50) NULL
Run Code Online (Sandbox Code Playgroud)
很酷,也很有效.但是现在发生在视图中的事情非常糟糕:视图字段'concatName'不包含连接的名称,而是电话号码,即使视图字段仍然是相同的数量和名称!
似乎MS-SQL只是移动视图中的数据列而不更新列定义.相当可怕的情况,如果你忘记更新取决于你改变的表的视图...
我是否已经监督了某些事情,或者我是否真的有责任在我添加新的表格列时始终检查/更改所有视图?有没有办法让MS-SQL服务器至少抛出依赖视图的警告?
我注意到如果视图构造如下,它不会发生:
CREATE VIEW v_people AS
SELECT
people.lastName + ' ' + people.firstName AS concatName,
people.*
FROM people
Run Code Online (Sandbox Code Playgroud)
但对我来说,这只是一个讨厌的解决方法......
任何提示?
| 归档时间: |
|
| 查看次数: |
2299 次 |
| 最近记录: |