我有下表
CREATE TABLE [OMEGACA].[ACC_POL]
(
[POLICY_ID] [int] IDENTITY(1,1) NOT NULL,
[POLICY_NAME] [nvarchar](200) NOT NULL,
[POLICY_DESC] [nvarchar](1000) NULL,
[STATUS_ID] [int] NOT NULL,
[RULE_EVAL] [int] NOT NULL,
[AUDIT_OPTION] [int] NOT NULL,
[FORMULA] [nvarchar](2000) NULL,
[DEBUG_LOG] [int] NOT NULL,
[USER_APPLY] [int] NOT NULL,
[USE_CACHE] [int] NOT NULL,
[DATE_UPD] [datetime] NULL,
[USER_UPD] [nvarchar](200) NULL,
[DATE_CREATED] [datetime] NOT NULL,
[USER_CREATED] [nvarchar](200) NOT NULL,
.....
)
我还有以下看法:
当我查询视图时V_ACC_POL
,我从视图中获取VARCHAR
列的数据类型:POLICY_NAME
我期望它是NVARCHAR
(如在基表中一样)。
问题:
- 为什么
NVARCHAR
基表中的列会变成VARCHAR
视图中的列? - 我怎样才能在视图中看到它
NVARCHAR
?
这是因为您首先创建了表和视图,然后在创建视图之后改变了表中的列大小。
基表中的任何架构更改都不会自动反映在视图中。
您有两个选择:
sp_refreshview
在列更改后立即执行存储过程:如果有人尝试更新表模式,则会出现以下错误: