sql-server - SQL Server 2008 View 正在丢失默认值

标签 sql-server sql-server-2008 view

我有一个奇怪的问题,在创建 View 一段时间后,applicationID 的默认值丢失或重置(我们不知道为什么,我们有类似 0.000 或 0 或 null 的东西)。

CREATE VIEW [schemaA].[tableA]
AS
    SELECT 
        *, 123456 applicationID
    FROM 
        [schemaB].[dbo].[tableA]

如果我们运行 ALTER 语句,applicationID 的值将返回到最初定义的值。

ALTER VIEW [schemaA].[tableA]
AS
    SELECT 
        *, 123456 applicationID
    FROM 
        [schemaB].[dbo].[tableA] 

我需要指出的是,在运行 ALTER 语句之前,我们导出了 View DDL,它是正确的。

我如何确定是什么破坏了 View 定义,或者 View 是否应该有不同的定义(如果可能,可以设置一个默认值)。

谢谢

最佳答案

会不会是这样的?

CREATE TABLE testTbl(aColumn INT);
INSERT INTO testTbl VALUES(1),(2);
GO

CREATE VIEW vwTestTbl
AS
SELECT *,1234 applicationID
FROM testTbl;
GO

SELECT * FROM vwTestTbl;
/*
aColumn applicationID
    1   1234
    2   1234
*/
GO

--be aware of the fact, that the new column is called newColumn and its type is varchar(5)!
ALTER TABLE testTbl ADD newColumn varchar(5);
GO
UPDATE testTbl SET newColumn='test';
GO

--The varchar value "test" comes under the column caption "applicationID"!
SELECT * FROM vwTestTbl;
/*
aColumn applicationID
    1   test
    2   test
*/
GO

--now you re-compile it with your attempt to ALTER the VIEW
ALTER VIEW vwTestTbl
AS
SELECT *,1234 applicationID
FROM testTbl;
GO

SELECT * FROM vwTestTbl;
/*
aColumn newColumn applicationID
    1   test      1234
    2   test      1234
*/
GO

--clean up
DROP VIEW vwTestTbl;
DROP TABLE testTbl;

关于sql-server - SQL Server 2008 View 正在丢失默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33077422/

相关文章:

java - 在eclipse中监控java线程

Cakephp 每个 Controller 有多个 View

sql - 如何在 Entity Framework 中发送常规内联SQL

sql - 此查询如何创建逗号分隔列表 SQL Server?

mysql - 组合 Blackboard 9.1.13 控制台 SQL 查询

SQL Server 如果不存在则插入

sql - 在多个表中插入一行,并分别维护关系

javascript - 我不断收到 HttpGet 一次又一次

sql-server - SQL Group By Cube 并获取每个组合的总计

sql-server - SQL Server 存储过程设置选项