1

在创建 Windows Azura SQL 数据库时,您可以使用此脚本。

下面显示的脚本应该防止两个表具有完全相同的名称时可能发生的冲突。

我的问题是:谁能详细解释这段代码是如何工作的注意:我有很好的数据库背景和 SQL 的使用

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Department]') AND type in (N'U'))

4

1 回答 1

1

sys.objects - MSDN

为在数据库中创建的每个用户定义的、模式范围的对象包含一行。

sys.objects.type:

U = 表(用户定义)

OBJECT_ID - MSDN

返回模式范围对象的数据库对象标识号。

因此,您通过将对象名称传递给OBJECT_ID指定类型应为表的函数来查询返回的对象 ID 是否存在。

如果它不存在,它不会返回任何行,因此不满足包装语句中的条件:IF NOT EXISTS

于 2013-01-26T09:39:41.487 回答