2

创建新表时是否有任何配置设置SQL Server 2008Primary key must

我知道 Oracle 不允许创建没有主键的表。但是 SQL Server 2008 没有这样的限制。

你知道这样做的任何方法吗(大多数时候我忘记创建它,SQL Azure 会为此给出错误)?

4

1 回答 1

0

您可以为此使用 DDL 触发器,并且您必须解析 Sql 以检查是否正在创建 PK。我认为没有其他选择。

例子:

create trigger trgTable
on database
for create_table, alter_table
as
set nocount on

declare @data xml, @obj varchar(255), @type varchar(255), @cmd varchar(max)
set @data = EVENTDATA()

select 
    @obj    = @data.value('(/EVENT_INSTANCE/ObjectName)[1]', 'varchar(256)'), 
    @type   = @data.value('(/EVENT_INSTANCE/ObjectType)[1]', 'varchar(25)'), 
    @cmd    = @data.value('(/EVENT_INSTANCE/TSQLCommand)[1]', 'varchar(max)')

-- now do your logic here
于 2013-03-28T13:01:05.953 回答