gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 13:49:24 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com