mysql - 唯一约束错误
问题描述
我正在从 MySQL 迁移到 SQL Server 2012,但遇到了麻烦。问题是我有几个带有UNIQUE
命令的表,我尝试将它们转换为等效的 SQL Server 语法,但是当我尝试使用相同的 UNIQUE 字段名称创建第二个表时,会出现此错误。我该如何解决。
Msg 2714, Level 16, State 5, Line 1
There is already an object named 'Codigo' in the database.
Msg 1750, Level 16, State 0, Line 1
Could not create constraint. See previous errors.
CREATE TABLE cdepartamento (
Sys_PK int NOT NULL IDENTITY,
Sys_TimeStamp datetime2(0) NOT NULL,
Sys_GUID varchar(32) NOT NULL,
Sys_DTCreated datetime2(0) DEFAULT NULL,
Sys_User varchar(5) DEFAULT NULL,
Sys_LastUser varchar(5) DEFAULT NULL,
Sys_Exported smallint DEFAULT NULL,
Sys_DTExported datetime2(0) DEFAULT NULL,
Sys_Info varchar(32) DEFAULT NULL,
Codigo varchar(15) NOT NULL,
Descripcion varchar(150) DEFAULT NULL,
sys_recver int DEFAULT '0',
sys_deleted binary(1) DEFAULT NULL,
sys_lock int DEFAULT NULL,
PRIMARY KEY (Sys_PK),
**CONSTRAINT Sys_GUID UNIQUE (Sys_GUID),**
**CONSTRAINT Codigo UNIQUE (Codigo)**
)
解决方案
好吧,错误说明了一切......
您需要在这些约束中强制执行唯一性。这就是为什么我讨厌 mysql 并且我鄙视那些使用它并咒骂它的公司,因为有人选择使用它。
命名约束时,请使用广泛使用的模式:
CONSTRAINT UN_cdepartamento_GUID UNIQUE (Sys_GUID),
CONSTRAINT UN_cdepartamento_Codigo UNIQUE (Codigo)
但最好的方法是,因为您只要求每列的唯一性,所以在定义列时添加约束。这样,您就可以让您的 RDMBS 为您命名。让我告诉你,SQL Server 和 PostgreSQL 在命名这些方面做得很好……
推荐阅读
- javascript - 如何对此名称进行实时搜索反应js?
- csv - 无法理解这个 bash 脚本 $ awk -F
- javascript - 带有标记的谷歌地图没有出现地图
- python - 我们如何打印列表值的自定义值
- javascript - 如何从子元素中获取属性?
- sql - Postgres DELETE FROM 不删除行但返回成功
- reactjs - 如何在 React 中将状态传递给 MDBDataTable
- scala - Scala中字符串中最长的字母顺序子字符串
- flutter - 如何从颤振谷歌登录插件中获取刷新令牌和 expiresInSeconds
- karate - 空手道同时测试