我正在研究一些简单的脚本,但不能围绕这个问题缠住我的头. 所以在这里. /** * Booking * @ORM\Table() * @ORM\Entity(repositoryClass="Tons\BookingBundle\Entity\BookingRepository") * @UniqueEntity(fields={"room", "since", "till"}, repositoryMethod="getInterferingRoomBookings") * @Assert\Callback(methods={"isSinceLessThanTill"}, groups={"search","default"}) */ class Booking 和存储库方法 /** * Get room state for a certain time period * * @param array $criteria
以下是关于 unique-constraint 的编程技术问答
我的问题将以电子邮件为例,但这可以适用于任何内容. 通常在注册新用户之前(包括插入他/她的电子邮件),我检查了他/她的电子邮件是否已经存在于DB中: $result = mysql_query("SELECT * FROM Users WHERE email = '".mysql_real_escape_string($email)"';"); if(!$result) { die(mysql_error()); } if(mysql_num_rows($result) > 0) { die('
Email already in DB. Recover Email
'); } else { //insert new user data into Users table } 由于我将用户表中的email字段限制为UNIQUE>无论如何,首先尝试插入并且如果失败,请检查错误会很快吗?这样的东西: $result
处理一些旧的冬眠代码. 如何使用HBM.XML(Hibernate映射文件)而不是用注释来完成以下操作? @Table(name="users", uniqueConstraints = { @UniqueConstraint(columnNames={"username", "client"}), @UniqueConstraint(columnNames={"email", "client"}) }) public class User implements Serializable { private static final long serialVersionUID = 1L; @Id private int id; private String username; private String email; private Client client; } 解决方案 使用properties标签
我想知道是否有人可以帮助我.我在SQL中运行了整个内容,但它给了我这个错误: 错误报告: SQL错误:ORA-00001:违反了唯一约束(games.athlete_pk) 00001. 00000-"违反了唯一约束(%s.s)" *原因:更新或插入语句尝试插入重复键. 对于在DBMS Mac模式下配置的受信任的Oracle,您可能会看到 如果重复条目在不同级别上存在,则此消息. *操作:删除唯一限制或不插入密钥. 我想在一次交易中一次插入所有记录.并使用序列生成新的主键.我尝试一个一个插入,还可以.但是,如果我一次插入全部,这就是错误... INSERT ALL INTO athlete (athlete_no, athlete_name, athlete_birthdate, athlete_birthplace, athlete_born_country, athlete_gender, athlete_height, athlete_weight, a
i有一个具有必须具有唯一值的列的表(但它也可能是多列唯一索引,问题是相同的).在我的PHP脚本中,我必须在该表中插入一行. ,我正在寻找一种方法,而不是特定于mySQL的方法,以退出PHP脚本,如果有问题,问题是不是违反了独特的约束.为了使事情变得更加容易,我不想在以前使用选择查询:d 目前我正在做这样的事情: try { $stmt = $dbh->prepare($someinsertquery); $stmt->bindParam(':somecol', $somecol); $stmt->execute(); } catch (PDOException $e) { $errcode = $e->getCode(); if (! ($e->getCode() === '23000')) { echo 'Error inserting into db: ' . $e->getMessage();
我已经搜索了Google,但对此并没有太多运气,所以也许可以提供帮助.我正在开发一个用于几个项目的用户身份验证系统,并且需要确保电子邮件地址(也是用户名)是唯一的. 我在MySQL查询中将字段设置为唯一,但是如果提供的电子邮件与现有记录匹配,则需要一种取消SQL查询的方法,并通知用户"指定的电子邮件已经在使用". 我可以在插入之前进行精选查询,但是我想知道是否有一种编写SQL查询的方法,以便如果不存在电子邮件或类似的内容,则执行插件. 然后,如果没有执行插入,我需要知道,我需要能够分开其他错误. 这可能吗?如何? 解决方案 如果您使用的是PDO,则可以捕获异常并检查状态代码,例如 // make sure you're set to throw exceptions $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $stmt = $pdo->prepare('INSERT I
我有一个具有唯一字段的实体a,该字段基本上定义了实体,这意味着它是平等的,然后实体也完全相同. 第二点是,如果违反该约束,请不要说出任何例外.这意味着用户将完全尝试输入重复. 如果复制,该应用程序应默默选择已经存在的实体.我的问题现在是我应该做什么,尤其是在保存包含AS的列表的实体时该怎么办. 只是抓住例外,然后从那里去 我不确定这是否很容易,因为DatainTegrityViolationException不会容易地处理任何易于处理的信息,例如在casccaded持续存在的情况下受到了影响的影响!!! 保存之前检查(坚持),然后用现有一个(具有ID集)替换提交的实体 我更喜欢它,但是有一个相当大的开销 更好的方法是什么? 解决方案 对于选项1)您正在寻找 http://dev.mysql.com/doc/refman/5.5/en/insert-on-duplate.html 但是该命令在JPA/Hibernate级别没有任何等效的认为那是
我正在为Android使用Ormlite,并且我正在尝试获得多列唯一约束.截至目前,我只能对这样的独立列获得唯一的约束: CREATE TABLE `store_group_item` (`store_group_id` INTEGER NOT NULL UNIQUE , `store_item_id` INTEGER NOT NULL UNIQUE , `_id` INTEGER PRIMARY KEY AUTOINCREMENT ); 我想要的是 CREATE TABLE `store_group_item` (`store_group_id` INTEGER NOT NULL , `store_item_id` INTEGER NOT NULL , `_id` INTEGER PRIMARY KEY AUTOINCREMENT, UNIQUE( `store_group_id`, `store_item_id` ); 在我
我有一个对3个fiels的独特约束的实体. 2个字段不可空,第三个字段是无效的. 我的问题,当第三个字段为null时,唯一的约束不起作用,因此我可以在数据库中有一些重复的值,例如(5,1,null)(5,1,null) ) 对我来说,(5,1,null)是一个独特的值,也有空. 你有什么想法吗? 这是我的ORM线: * @ORM\Table(name="table", uniqueConstraints={@ORM\UniqueConstraint(name="table_idx", columns={"field1", "field2", "field3"})}) 编辑:无效的值是其他实体的外键,因此我不能放置自定义值.这是一个实体或null. 解决方案 这可以使用两个部分索引来实现.但是学说注释还不够.我们应该添加一些SQL来解决问题. 注意!我正在使用postgresql和迁移在我的项目中. 首先创建2个唯一索引(我使用YA
假设一个简单的Grails域类: class Account { String countryId; String userName; String password; static constraints = { ...???... } } 要求用户名对于特定的countryId 是唯一的,因此在两列上必须有一个unique unique .如何在"约束"定义中表达这一点? 解决方案 userName(unique: ['countryId']) 您可以在数组中包含许多其他属性,这些属性构成了用户名的"唯一"约束中必须考虑的其他属性. 所以,例如,如果您想在countryId和provinceId中使userName唯一,它看起来像这样: userName(unique: ['countryId', 'provinceId']
我正在尝试对 oe.product_information 表创建约束,该表由Oracle 11G R2提供. 约束应使 product_name 唯一. 我已经尝试了以下语句: ALTER TABLE PRODUCT_INFORMATION ADD CONSTRAINT PRINF_NAME_UNIQUE UNIQUE (PRODUCT_NAME); 问题是,在 oe.product_information 中,已经存在超过两次的产品名称. 执行上面的代码会引发以下错误: an alter table validating constraint failed because the table has duplicate key values. 是否有可能在现有表数据上不使用新创建的约束? 我已经尝试了DISABLED关键字.但是当我启用约束时,我会收到相同的错误消息. 解决方案 如果您希望为所有以后的条目执行某种独特性,同时保持当前重复项,则无法
我有一些我想将其更改为唯一约束的非唯一约束(自数据模型以来,业务规则已更改).有什么办法可以通过辍学和重新创建作为独特的约束?我以为alter constraint命令中会有一个选择,但我还没有找到任何东西. 谢谢! 解决方案 您不能以希望掉落并重新创建它的方式修改约束.如果您想在没有停机时间的情况下执行此操作,请查看其他解决方案 您不能将非唯一索引转换为唯一的索引. (很难说出什么不能做. htm#i2050158" rel =" noreferrer"> alter索引 sql语言参考的页面,搜索唯一的单词,而没有找到任何相关的提示.我查看了11g而不是10克,但这可能会更好,但这可能会更好情况是因为10G中存在一些功能,但仅记录在11G中.) 但是,您可以使用非唯一索引进行独特的约束.但是有一些性能注意事项:唯一的索引将更小,更快. create table my_table(a number); create index my_table_in
在Oracle 10G中,如何在两个VARCHAR字段上添加唯一的不敏感约束?例如,给定表中的以下记录: "Stephen", "Swensen" "John", "Smith" 以下插入物将无效: "stephen", "Swensen" "John", "smith" "stephen", "swensen" 但是以下插入将有效: "Stephen", "Smith" "John", "Swensen" 解决方案 假设您的表被称为 person ,而第一个和姓氏列称为 first_name 和 last_name ,添加此唯一的独特约束: ALTER TABLE person ADD CONSTRAINT person_name_unique UNIQUE(LOWER(first_name),LOWER(last_name)); 让我知道我是否正确理解了您的问题并做出了有关您的表布局的正确假设. 其他解决方案 我设法通过执行:
我使用的是D2K 6i表单,并从存储数据库(Oracle9i)过程ORA-00001:违反了唯一约束(.)的表单上获取错误,但我无法从哪个过程中删除. 任何人都可以帮助我 解决方案 对于后代,这是解决方案: : ok在d2k表单中,有一个在错误的触发器中,您可以在其中使用函数dbms_error_text获取过程,包装名称行号,该语句的错误即将到来 其他解决方案 经过大量研究,敲打和咬牙切齿,我遇到了这种模式: CREATE OR REPLACE PACKAGE BODY my_schema.package_name IS PROCEDURE foo IS BEGIN -- Call stored procedures/functions that throw unhandled exceptions EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('ERROR!
当我需要将零值视为平等时,我该如何创建唯一的约束. Alter表T1添加约束T1_UN 唯一(NVL(C1,'')) 我得到 ORA-00904: : invalid identifier nvl上的点 谢谢! 解决方案 NOT NULL似乎是一个更好的主意,但是您可以使基于功能的索引唯一: create unique index idx_t1 on t1 (nvl(C1, ' ')); 其他解决方案 只需使列NOT NULL. NULL的性质是它永远不等于任何东西.因此,您的列中的每个NULL在某种程度上都是UNIQUE.像您想要的那样,将它们包含在UNIQUE键中是没有意义的.您要这样做的原因可能是现有的数据完整性问题.因此,要制作列NOT NULL,您可能必须将NULL值迁移到其他东西,首先... 注意:您可以简单地简单地制作列UNIQUE.然后,您可以使用上述几个NULL值...
DELETE from dbo.T_LIAV_AGENT_STATE_APPROVAL SAP WHERE EXISTS (SELECT UNIQUE 1 FROM MCS_SYNC_STATE_APPR APP inner join MCS_SYNC_NAME SN on SN.SE_NAME_ID = APP.SE_NAME_ID and SN.ACTION in('U','S') Where APP.SE_name_id = SAP.AV_NAME_ID and APP.SYNC_INSTANCE_ID = param_inst_ID); COMMIT; INSERT INTO dbo.T_LIAV_AGENT_STATE_APPROVAL SELECT UNIQUE APP.SE_NAME_ID
我正在尝试在表中创建一个新行.表上有两个约束 - 一个在密钥字段上(db_id),另一个在键字段上,将一个值限制为字段env中的几个.当我进行插入时,我不会将密钥字段作为我要插入的字段之一,但我会遇到此错误: unique constraint (N390.PK_DB_ID) violated 这是导致错误的SQL: insert into cmdb_db (narrative_name, db_name, db_type, schema, node, env, server_id, state, path) values ('Test Database', 'DB', 'TYPE', 'SCH', '', 'SB01', 381, 'TEST', '') 我唯一能够出现的是,如果手动插入行,Oracle可能会尝试分配已经使用的DB_ID.该数据库中的数据以某种方式从生产数据库中恢复/移动,但是我没有有关如何完成的详细信息. 有什么想法吗?
我有一个数据库表,上面有一个唯一的约束(唯一(DADSNBR, DAROLEID)对).我将同时将多个值插入该表,因此我想使用一个查询完成它 - 我认为这将是更快的方法.我的查询是: INSERT ALL INTO ACCESS (DADSNBR, DAROLEID) VALUES (68, 1) INTO ACCESS (DADSNBR, DAROLEID) VALUES (68, 2) INTO ACCESS (DADSNBR, DAROLEID) VALUES (68, 3) INTO ACCESS (DADSNBR, DAROLEID) VALUES (68, 4) SELECT 1 FROM DUAL 由于语句中有一些条目是数据库中已经重复的条目,因此整个插入件失败,并且没有插入所有行. 是否有一种方法可以忽略唯一约束失败的情况,而只需插入独特的限制,而无需将其拆分为单个插入语句? 编辑:我意识到我可能不想这样做,但是我仍然
我有这个表: XPTO_TABLE (id, obj_x, date_x, type_x, status_x) 我想创建一个独特的约束,仅在status_x 5>. 时才适用于字段(obj_x, date_x, type_x) 我试图创建这个,但Oracle说: line 1: ORA-00907: missing right parenthesis CREATE UNIQUE INDEX UN_OBJ_DT_TYPE_STATUS ON XPTO_TABLE( (CASE WHEN STATUS_X 5 THEN (OBJ_X, TO_CHAR (DATE_X, 'dd/MM/yyyy'), TYPE_X) ELSE NULL END)); 正确的语法是什么? 解
我正在使用Oracle表,并在四列上创建了一个唯一的约束.约束中的这些列可以在其中无效吗? 解决方案 除非指定列而不是null,否则您的列中可以有空.但是,您只能存储一个nulls的实例(除非所有列为null,否则不允许两组相同的列): SQL> CREATE TABLE t (id1 NUMBER, id2 NUMBER); Table created SQL> ALTER TABLE t ADD CONSTRAINT u_t UNIQUE (id1, id2); Table altered SQL> INSERT INTO t VALUES (1, NULL); 1 row inserted SQL> INSERT INTO t VALUES (1, NULL); INSERT INTO t VALUES (1, NULL) ORA-00001: unique constraint (VNZ.U_T) violated SQL> /* you can ins