我有一个表dbo.ExceptionMessage
,现在我想将列数据类型从nvarchar(100)
更改为nvarchar(250)
。
我使用alter
查询来更改此
ALTER TABLE dbo.ExceptionMessage
ALTER COLUMN Address NVARCHAR(250)
并且在执行此查询时,我收到此错误:
对象'AddressView'依赖于列'Address'。
ALTER TABLE ALTER COLUMN Address
失败,因为一个或多个对象访问此列。
我的数据库中有一个名为AdressView
的视图,我在此AddressView
中使用此地址列。
请帮忙
答案 0 :(得分:1)
您的AddressView定义必须具有" WITH SCHEMABINDING" -
CREATE VIEW AddressView
WITH SCHEMABINDING
AS
-- SELECT STATEMENTS
GO
您可以在ALTER VIEW语句中删除此子句 -
ALTER VIEW AddressView
-- WITH SCHEMABINDING
AS
-- SELECT STATEMENTS
GO
理想情况下,在更改基表之后,您应该将" WITH SCHEMABINDING"再次在视图中。因为它会防止意外地改变基表。这应该可以帮助您解决问题。
答案 1 :(得分:0)
//如果你对该表有任何约束,那么首先删除
ALTER TABLE [dbo.ExceptionMessage]
DROP CONSTRAINT [CONSTRAINT_NAME];
ALTER TABLE dbo.ExceptionMessage
ALTER COLUMN Address NVARCHAR(250)
ALTER TABLE [dbo.ExceptionMessage]
ADD FOREIGN KEY (CONSTRAINT_NAME)
REFERENCES REFERENCE_TABLE_NAME(REFERENCE_COLUMN_NAME);