标签: unique-constraint

SQL中的UNIQUE约束(SQL Server)

为什么数据库中需要UNIQUE约束?

你能提供任何例子吗?

默认情况下,主键是UNIQUE ...可以理解,因为它们在其他表中被称为外键...需要关联它们来连接rdbms平台...

但是为什么将其他列称为UNIQUE,这样做有什么好处?)

sql-server-2005 unique-constraint

5
推荐指数
1
解决办法
481
查看次数

Hibernate/JPA通过连接表和复合键,Unique Constraint问题有多对多的关系

所以昨天我问了这个问题,但目标职位已经改变,问题不同了:

Hibernate/JPA具有多对多关系的元素集合?

我想知道是否可以创建将模拟我所需关系的实体,以便Hibernate在我启动应用程序时创建我的模式.

我想要的关系看起来像这样:

1 http://a8.sphotos.ak.fbcdn.net/hphotos-ak-ash4/417593_10150594114269218_505554217_8657377_1475865815_n.jpg

问题是Join表实际上可以包含不链接到任何Elements的行.该结构表示基于"类型"和"值"对的元素分类,并输入到该特定应用之外的系统中.

我希望能够做的是通过映射将我的元素Hibernate实体设置为包含类别列表,这样我就可以实际看到我的元素所属的类别,以便hibernate为我创建表格.

这是我到目前为止所做的:在我的Element Entity类中映射这样:

@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "ELEMENT_ELEMENTCATOGORY", joinColumns = {
        @JoinColumn(name = "type", referencedColumnName = "type"),
        @JoinColumn(name = "value", referencedColumnName = "value") })
@Column(name = "category")
public List<ElementCategory> getCategories() {
    return categories;
}
Run Code Online (Sandbox Code Playgroud)

这完成了我想要的大部分内容,它创建了我的表格,如上所述,我想要的只是一个东西,在(类型,值)对的元素表中添加了一个唯一约束.我不希望这样,因为多个元素可以具有相同的类型和值对,我需要能够从开始创建中停止Unique Constraint,但是无法弄清楚当前映射的方式,我可以这样做吗?我错过了多对多关系的观点吗?

java many-to-many hibernate composite-key unique-constraint

5
推荐指数
1
解决办法
2425
查看次数

Yii对两列不同表的唯一验证即.复合唯一验证

我有两个表table1,table2每个表都有一个列email与不同的其他列一起命名.我想要的是一个验证器,它在email两个列的字段中查找唯一性.我找到了一个检查多个SAME表列的扩展.如何扩展它以使其适用于多个列?

php validation composite-key unique-constraint yii

5
推荐指数
1
解决办法
3228
查看次数

是否可以跨多个表创建唯一(索引)约束?

有没有办法在MySQL数据库中的表之间创建唯一索引?

我的意思是独一无二的

                table A ids=1,2,5,7... 

                table B ids=3,4,6,8...
Run Code Online (Sandbox Code Playgroud)

mysql sql database unique-constraint

5
推荐指数
1
解决办法
2019
查看次数

jOOQ:DataAccessException和约束

我正在使用Jersey和jOOQ实现REST API.

我有一个带有一些约束的表,例如一个唯一的键.当插入违反此约束的元组时,jOOQ会抛出DataAccessException:

org.jooq.exception.DataAccessException: SQL [insert into ...]; ERROR: duplicate key value violates unique constraint "issue_name_key"
Run Code Online (Sandbox Code Playgroud)

有没有办法找出违反了哪个约束,没有字符串解析错误消息?如果违反了约束,我想返回一个400 bad requesthttp状态代码而不是一个500 general error.

如果这是不可能的,这里的常见做法是什么?我是否应该查询数据库中每个可能的约束违规?这闻起来像一个维护陷阱.

java http unique-constraint jooq http-status-code-400

5
推荐指数
1
解决办法
1290
查看次数

在PostgreSQL中移位(更新)唯一列值

使用MS SQL Server,以下工作正常:

CREATE TABLE #temptable(mykey int primary key)

INSERT INTO #temptable VALUES (1)
INSERT INTO #temptable VALUES (2)

UPDATE #temptable SET mykey=mykey+1
Run Code Online (Sandbox Code Playgroud)

但是,使用PostgreSQL,以下操作失败:

CREATE TABLE pg_temp.tbl_test(testkey integer primary key)

INSERT INTO pg_temp.tbl_test VALUES (1)
INSERT INTO pg_temp.tbl_test VALUES (2)

UPDATE pg_temp.tbl_test SET testkey=testkey+1
Run Code Online (Sandbox Code Playgroud)

错误:重复键值违反唯一约束"tbl_test_pkey"DETAIL:键(testkey)=(2)已存在.

我需要在一个表中递增一列的每个值,这是复合唯一约束的一部分.我怎么能在一个声明中这样做?

谢谢 !


编辑:如果你想知道为什么这有意义(至少对我来说),这是一个更完整的场景.

我有一个按类别组织的项目表.每个项目在该类别中都有一个特定的位置.

category_id (PK) | category_position (PK) | item_attribute_1 | item_attribute_2
1 | 1 | foo | bar
1 | 2 | foo2 | bar2
2 | 1 | foo4 | bar4 …
Run Code Online (Sandbox Code Playgroud)

sql postgresql unique-constraint sql-update

5
推荐指数
1
解决办法
1605
查看次数

PHP/MySQL插入不同的数组值

我使用下面的代码将值插入MySQL表,我需要阻止用户多次插入相同的prioritystudentname.请问最好的方法是什么?

这是表:

 id         studentname    title         academicdiscipline  priority    
012345678   TEST, NAME     Test title 1     Civil                1
012345678   TEST, NAME     Test title 2     Civil                2
012345678   TEST, NAME     Test title 3     Civil                3
012345678   TEST, NAME     Test title 4     Civil                4
012345678   TEST, NAME     Test title 5     Civil                5
Run Code Online (Sandbox Code Playgroud)

码:

if(isset($_POST['submit']) && !empty($_POST['submit'])) {
  $ids = $_POST['id']; 
  $names = $_POST['studentname']; 
  $titles = $_POST['title'];  
  $disciplines = $_POST['academicdiscipline']; 
  $priorities = $_POST['priority']; 

foreach($priorities as $key => $priority) { 
    if ($priority > …
Run Code Online (Sandbox Code Playgroud)

php mysql arrays unique-constraint distinct-values

5
推荐指数
1
解决办法
684
查看次数

Hibernate/JPA基于唯一键而不是主键进行合并

在Hibernate 5.1.0/JPA 2.1中,有没有办法基于唯一键而不是基于主键进行合并?

我有一个唯一键的值作为外部系统的输入,但输入显然不包含我的内部主键.

我希望能够调用EntityManager#merge(entity),如果主键entity不为null,则让Hibernate/JPA使用主键进行合并,但是,如果主键为null,则使用唯一键进行合并(即, primary为null,如果唯一键对应于数据库中的行,则该行将被更新,但如果数据库中没有与唯一键对应的行,则将插入新行).

merge hibernate jpa primary-key unique-constraint

5
推荐指数
1
解决办法
463
查看次数

Postgres何时检查唯一约束?

我有一列sort_order具有唯一约束的列。以下SQL在Postgres 9.5上失败:

UPDATE test
SET sort_order = sort_order + 1;

-- [23505] ERROR: duplicate key value violates unique constraint "test_sort_order_key"
--   Detail: Key (sort_order)=(2) already exists.
Run Code Online (Sandbox Code Playgroud)

显然,如果sort_order值在更新之前是唯一的,则在更新之后它们仍将是唯一的。为什么是这样?

相同的语句在Oracle和MS SQL上工作正常,但在MySQL和SQLite上失败。


这是SQL小提琴的完整设置代码:

DROP TABLE IF EXISTS test;
CREATE TABLE test (
  val        TEXT,
  sort_order INTEGER NOT NULL UNIQUE
);

INSERT INTO test
VALUES ('A', 1), ('B', 2);
Run Code Online (Sandbox Code Playgroud)

postgresql unique-constraint

5
推荐指数
1
解决办法
502
查看次数

当布尔字段为true时,mysql约束是唯一的

我有这张桌子:

create table expert_country (
    expert_id  varchar(36) not null,
    country_id varchar(36) not null,
    main       boolean     not null default false,
    primary key (expert_id, country_id),
    constraint foreign key (expert_id) references expert (id),
    constraint foreign key (country_id) references country (id),
    -- constraint i'm looking for
);
Run Code Online (Sandbox Code Playgroud)

但是我无法弄清楚每个国家只有一个主要专家所需要增加的限制。

我试过了constraint unique (country_id, true)constraint unique (*, country_id, true)但是它不是有效的sql。有任何想法吗?

mysql sql unique-constraint

5
推荐指数
1
解决办法
474
查看次数