Microsoft SQL Server Management Studio如何命名唯一键的约束?
当我运行以下sql命令时
INSERT INTO alert_template (object_type_id, object_id, alert_object_type_id, alert_object_id, monitor_type_bit_flags, name)
VALUES (5, null, 5, 0, 2147483647, 'alert-template-system-default');
我收到了错误消息
违反UNIQUE KEY约束'u_alert_template_object_association'。无法在对象'dbo.alert_template'中插入重复键。
错误消息引用哪个唯一键?
我在表u_alert_template_object_association
中找不到名为dbo.alert_template
的约束。 SQL Server Management Studio是否隐式创建了约束?如果是,它用于命名约束的约定是什么?
感谢。
更新
我刚刚发现创建表的语句定义了约束u_alert_template_object_association
。但是我没有在SQL管理工作室的对象资源管理器窗口中找到约束,Constraints
下的dbo.alert_template
没有列出约束u_alert_template_object_association
,这是导致我混淆的原因。帖子。那么Object Exploere窗口不应该显示在表的create语句中定义的约束吗?
CREATE TABLE alert_template
(
id INT PRIMARY KEY IDENTITY,
object_type_id TINYINT NOT NULL REFERENCES object_type(id)
CONSTRAINT u_alert_template_object_type
CHECK (object_type_id = 5 or object_type_id = 17 or object_type_id = 18 or object_type_id = 26 or object_type_id = 27),
object_id BIGINT NULL,
alert_object_type_id TINYINT NOT NULL REFERENCES object_type(id)
CONSTRAINT u_alert_template_alert_object_type
CHECK (alert_object_type_id = 5 or alert_object_type_id = 37 or alert_object_type_id = 38),
alert_object_id TINYINT NOT NULL,
name NVARCHAR(128) NOT NULL
CONSTRAINT u_alert_template_name UNIQUE (object_type_id, object_id, name),
monitor_type_bit_flags INT NOT NULL
CONSTRAINT u_alert_template_object_association UNIQUE (object_type_id, object_id, alert_object_type_id, alert_object_id, monitor_type_bit_flags),
);
答案 0 :(得分:1)
此错误通知您正在尝试将重复值输入到已定义唯一索引/键的列中。
据我所知,SQL管理工作室不会为您创建这些,您必须自己创建它们,但是,它确实可以为您创建一个名称,通常采用IX_xxxxx格式
看看这篇文章,它引导您使用SQL管理工作室创建索引,您应该能够使用相同的过程来查看分配给相关表的任何索引/键,并设置您理解的路径为什么插入失败。
Add unique constraint in SQL SQL Server 2008 GUI?
希望这有帮助!