Eu tenho a seguinte tabela
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,
.....
)
E eu também tenho a seguinte visão:
Quando consulto a visualização V_ACC_POL
, obtenho o tipo de dados VARCHAR
para a coluna POLICY_NAME
da visualização:
Eu esperava que fosse NVARCHAR
(como na tabela base).
Questões:
- Por que a
NVARCHAR
coluna na tabela base se transforma em umaVARCHAR
coluna na exibição? - Como posso tê-lo na visualização como
NVARCHAR
?
Isso ocorre porque você primeiro criou a tabela e a exibição e, depois de criar a exibição, alterou o tamanho das colunas na tabela.
Qualquer alteração de esquema na tabela base não é refletida automaticamente na exibição.
Você tem duas opções:
sp_refreshview
o procedimento armazenado imediatamente após as alterações de coluna:Isso gerará o erro abaixo se alguém tentar atualizar o esquema da tabela: