【发布时间】:2013-11-25 22:25:38
【问题描述】:
我有一个使用以下内容创建的自定义类型:
IF EXISTS (SELECT * FROM sys.types WHERE is_table_type = 1 AND name = 'LineItemType')
BEGIN
DROP TYPE dbo.LineItemType
END
GO
CREATE TYPE dbo.LineItemType
AS TABLE
(
Id UNIQUEIDENTIFIER,
Invoice_Id UNIQUEIDENTIFIER,
Cost INT,
Quantity INT,
Total INT,
[Description] NVARCHAR(250)
);
GO
这种类型用作我的一个存储过程的参数,如下所示:
IF EXISTS (SELECT 1 FROM sys.procedures WHERE name = 'AddSomething' AND SCHEMA_NAME(schema_id) = 'dbo')
BEGIN
DROP PROCEDURE dbo.AddSomething
END
GO
CREATE PROCEDURE AddSomething
...
@LineItems AS dbo.LineItemType READONLY
AS
BEGIN
...
我的问题是我已经决定在我的类型中添加一些列,我在添加列的上方更新了我的脚本,并希望它在我运行它时简单地删除并重新创建,但我得到了这个错误:
消息 3732,级别 16,状态 1,第 4 行无法删除类型 'dbo.LineItemType' 因为它被对象引用 '添点什么'。可能有其他对象引用此类型。 消息 219,级别 16,状态 1,第 8 行类型“dbo.LineItemType”已经 存在,或者您没有创建它的权限。
我错过了什么?如何随时删除我的类型并重新创建它?
谢谢。
【问题讨论】:
标签: sql sql-server