我有一个旧的SQL Sever数据库,其中定义了一些规则。我可以使用以下方法获取规则列表:
time.sleep(randint(num1, num2) * 0.02)
我正在尝试使用以下语句单独删除这些规则:
t.speed(randint(num1, num2))
但是我收到以下错误消息: -
Msg 3716,Level 16,State 1,Line 2
无法删除规则“dbo.my_rule”,因为它绑定到一个或多个列。
我需要的是一个T-SQL查询来检查系统表,以便为我提供我的规则所绑定的列的列表。感谢。
答案 0 :(得分:0)
我需要的是一个T-SQL查询来检查系统表,以便为我提供我的规则所绑定的列的列表。
您可以使用sys.columns
:
┌────────────────┬───────────┬────────────────────────────────────────────────┐
│ Column name │ Data type │ Description │
├────────────────┼───────────┼────────────────────────────────────────────────┤
│ rule_object_id │ int │ ID of the stand-alone rule bound to the column │
│ │ │ by using sys.sp_bindrule. │
│ │ │ 0 = No stand-alone rule. │
│ │ │ For column-level CHECK constraints │
└────────────────┴───────────┴────────────────────────────────────────────────┘
并查询:
SELECT *
FROM sys.columns c
JOIN sys.objects o
ON o.type_desc = 'RULE'
AND c.rule_object_id = o.object_id;