Pra*_*r K 15 sql sql-server sql-server-2012
我需要创建一个SQL脚本来确定SQL Server 2012数据库中是否存在序列.我熟悉确定存储过程是否存在而不是序列的过程.谢谢.
Tim*_*m S 29
确定SQL Server 2012中是否存在序列的脚本与检查存储过程非常相似.请考虑以下代码,检查存储过程是否存在:
SELECT *
FROM sys.objects
WHERE object_id = OBJECT_ID(N'[dbo].[SProc_Name]') AND type IN (N'P', N'PC')
Run Code Online (Sandbox Code Playgroud)
类型的'P'和'PC'的值指定sys.object的类型是SQL存储过程或汇编(CLR)存储过程.要检查序列,只需将其更改为"SO"即表示它是序列对象:
SELECT *
FROM sys.objects
WHERE object_id = OBJECT_ID(N'[dbo].[Sequence_Name]') AND type = 'SO'
Run Code Online (Sandbox Code Playgroud)
例如,如果要创建序列(如果它不存在),则可以使用以下代码:
IF NOT EXISTS(SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Sequence_Name]') AND type = 'SO')
CREATE SEQUENCE [dbo].[Sequence_Name]
AS [bigint]
START WITH 1
INCREMENT BY 1
MINVALUE 1
MAXVALUE 9223372036854775807
CACHE 3
GO
Run Code Online (Sandbox Code Playgroud)
我希望这有帮助!
通过检查sys.sequences表中的数据:
select *
from sys.sequences
where object_id = object_id('schema_name.sequence_name')
Run Code Online (Sandbox Code Playgroud)
实际上,如果您确定除了名称等于的序列之外没有其他对象'schema_name.sequence_name',您可以检查object_id('schema_name.sequence_name') is not null
小智 5
这是Tim S的另一个快捷方式版本:
IF OBJECT_ID('schema_name.sequence_name', 'SO') IS NOT NULL
BEGIN
DROP SEQUENCE schema_name.sequence_name
END
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
38963 次 |
| 最近记录: |