我有一个奇怪的问题,在创建 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/