本文的目的是介绍SQL:当列为特定值时的唯一约束的详细情况,特别关注sql中为特定值显示的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解SQL:当列为特定值时的唯一约
本文的目的是介绍SQL:当列为特定值时的唯一约束的详细情况,特别关注sql中为特定值显示的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解SQL:当列为特定值时的唯一约束的机会,同时也不会遗漏关于db2唯一索引与唯一约束,重复删除唯一约束存储过程、forms – 重复值的唯一约束、JPA中的唯一约束检查、mysql 分区表如何实现对单列的唯一约束?的知识。
本文目录一览:- SQL:当列为特定值时的唯一约束(sql中为特定值显示)
- db2唯一索引与唯一约束,重复删除唯一约束存储过程
- forms – 重复值的唯一约束
- JPA中的唯一约束检查
- mysql 分区表如何实现对单列的唯一约束?
SQL:当列为特定值时的唯一约束(sql中为特定值显示)
CREATE TABLE foo ( dt AS DATE NOT NULL,type AS TEXT NOT NULL,CONSTRAINT unique_dt_type UNIQUE(dt,type) -- check constraint(?) )
当只有一个特定的条件存在时,尝试思考正确的语法来创建一个唯一的约束时,有一个脑袋.
给定,类型可以具有值A-F,每个日期只能有一个A,但可以有多个B-F.好表示例:
2010-01-02 | 'A' -- only one 2010-01-02 | 'B' -- can have multiple 2010-01-02 | 'B' 2010-01-02 | 'B' 2010-01-02 | 'C' -- can have multiple 2013-01-02 | 'A' -- only one 2010-01-02 | 'B' -- can have multiple 2010-01-02 | 'B' 2013-01-02 | 'F' -- can have multiple 2013-01-02 | 'F'
尝试阅读检查/唯一的语法,但没有任何例子. CHECK接近,但仅限于一个范围,并未与UNIQUE情景一起使用.也尝试搜索,但是我的搜索技能要么不符合标准,要么没有任何类似的问题.
解决方法
样品:
CREATE INDEX my_partial_ix ON my_sample_table (my_sample_field) WHERE NOT (my_sample_field = 'duplicates ok');
看看这里:
http://www.postgresql.org/docs/current/interactive/indexes-partial.html
请特别注意示例11-3.建立部分独特指数.它给出了一个与您明确目标一致的例子.
db2唯一索引与唯一约束,重复删除唯一约束存储过程
db2唯一索引与唯一约束,重复删除唯一约束存储过程
今天写可重复执行的脚本时,发现没有重复删除约束的存储过程,写此纪录。
--先创建唯一约束会自动创建唯一索引且两者名字相同,若该字段上已有索引,再次创建索引的语句无效,此时第二句话无效。--先创建唯一索引不会创建唯一约束,在执行创建唯一约束,此时两者名字不同ALTER TABLE USER_TEST ADD CONSTRAINT CONS_ID UNIQUE(ID);CREATE UNIQUE INDEX INDEX_ID ON USER_TEST(ID);--删除唯一约束时,会将该约束带来的索引一并删除。--如果先创建的索引,必须先删除约束才能删除索引。ALTER TABLE USER_TEST DROP CONSTRAINT CONS_ID;DROP INDEX INDEX_ID;--创建删除索引存储过程--1.变量名称不可以与表中字段名称一样,若一样不执行where语句,万一是delete或者update可就惨喽。--2.拼接sql语句时,记得关键字前后的空格,不然与表名连接在一起报语法错误。CR.........
forms – 重复值的唯一约束
>表单处理重复值(可以方便地假设这些值的类型为数字).所以这将使我们得到这样的东西:
"numbers" -> list(number)
>每个数字必须是唯一的,即它对于提交的所有其他数字必须是唯一的,并且它必须对数据库中已存在的数字是唯一的(这可以通过某些函数检查(num:Int)来检查:布尔).
>表单错误应该特定于数字,这不是唯一的.我不希望一般表单错误说“有重复的数字”.
什么是最好的方式去?
解决方法
自定义约束包含返回ValidationResult的逻辑,该ValidationResult是Valid或Invalid.可以将错误消息传递给无效结果,您可以在该结果中指定数据库中重复或存在的内容.
有关自定义验证的部分,请参见Play for Scala.
– 创建约束
//Make this lazy to prevent java.lang.ExceptionInInitializerError at runtime. lazy val uniqueNumbersConstraint = Constraint[String](Some("Unique numbers constraint"),"")(checkNumbers) //"Business Logic". //Important part here is that the function returns a ValidationResult and complies with the signature for Constraint. i.e. f: (T) => ValidationResult //Return Valid if n in numbers is not in database and there are no duplicates. //Otherwise return Invalid and an error message showing what numbers are in the database or duplicated. def checkNumbers(numbers: String):ValidationResult = { val splitNums = numbers.split(" ").toList.map(_.toInt) val dbnums = splitNums.partition(database.contains(_)) if(dbnums._1.isEmpty && uniquesAndDuplicates(splitNums)._2.isEmpty){ Valid }else{ val duplicates = uniquesAndDuplicates(dbnums._2)._2 val error = "Database contains: " + dbnums._1 + ",duplicated values: " + duplicates Invalid(error) } }
– 使用自定义约束验证表单
val helloForm = Form( tuple( "numbers" -> nonEmptyText.verifying(uniqueNumbersConstraint) ))
– 公用事业
//Return unique values on left side and duplicate values on right side def uniquesAndDuplicates(numbers: List[Int]):Tuple2[List[Int],List[Int]] = { numbers.partition(i => numbers.indexOf (i) == numbers.lastIndexOf(i)) } def checkNum(num: Int) = { database.contains(num) } val database = List(5,6,7)
– 等等
注意我在表单中将数字定义为字符串.当我将其定义为列表(数字)时,它会继续评估List().我认为这是一个具有约束力的问题.如果使用list(number)工作,使用List(1,2,3)而不是“1 2 3”是一个相当简单的更改.
– 样品
JPA中的唯一约束检查
我正在JPA中对userid列强制执行唯一性约束检查,这是对user表中的所有记录强制执行的。
@Table(name = "user", uniqueConstraints = @UniqueConstraint(columnNames = userid))
我的要求是,特定组织内的用户ID必须唯一,而不是在所有组织中都唯一。
如何执行此类检查?
答案1
小编典典您可以为唯一约束指定多个字段,请尝试:
uniqueConstraints={@UniqueConstraint(columnNames={"userid", "organizationid"})}
通过这样做,您的约束条件将检查userid和Organizationid的组合是否唯一。
最好的祝福,费边
mysql 分区表如何实现对单列的唯一约束?
如下 `id`,`username` 两列组合成唯一约束是可以分区,但怎么实现对 username 字段的唯一约束?
CREATE TABLE `user_tmp` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT ''id'', `username` char(20) NOT NULL DEFAULT '''' COMMENT ''用户名'', `password` char(32) NOT NULL DEFAULT '''' COMMENT ''密码'', PRIMARY KEY (`id`), UNIQUE KEY `username` (`id`,`username`) ) PARTITION BY RANGE (id) ( PARTITION p1 VALUES LESS THAN (1000), PARTITION p2 VALUES LESS THAN (2000), PARTITION p3 VALUES LESS THAN (3000) );
我们今天的关于SQL:当列为特定值时的唯一约束和sql中为特定值显示的分享就到这里,谢谢您的阅读,如果想了解更多关于db2唯一索引与唯一约束,重复删除唯一约束存储过程、forms – 重复值的唯一约束、JPA中的唯一约束检查、mysql 分区表如何实现对单列的唯一约束?的相关信息,可以在本站进行搜索。
本文标签: