我的数据库上有多个字段的唯一索引.因此,如果您尝试在重复记录上调用save,它会引发ActiveRecord :: StatementInvalid并显示mysql错误.有没有办法通过创建唯一约束来在rails中处理这个问题,或者在发生这种情况时让它返回相关的错误消息?
继承人追踪:
ActiveRecord::StatementInvalid: Mysql::Error: Duplicate entry '2010-12-09-2-0-1-1' for key 2: INSERT INTO `entries` (`rejected_at`, `created_at`, `comments`, `overtime`, `submitted_at`, `updated_at`, `time`, `approved`, `day`, `user_id`, `approved_at`, `job_id`, `submitted`, `rejected`) VALUES(NULL, '2010-12-09 21:50:46', NULL, 0, NULL, '2010-12-09 21:50:46', 2.0, NULL, '2010-12-09', 1, NULL, 1, NULL, NULL)
from /home/cmatthews/src/cannon/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb:219:in `log'
from /home/cmatthews/src/cannon/vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb:319:in `execute'
from /home/cmatthews/src/cannon/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb:259:in `insert_sql'
from /home/cmatthews/src/cannon/vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb:329:in `insert_sql'
from /home/cmatthews/src/cannon/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb:44:in `insert_without_query_dirty'
from /home/cmatthews/src/cannon/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb:18:in `insert'
from /home/cmatthews/src/cannon/vendor/rails/activerecord/lib/active_record/base.rb:2901:in `create_without_timestamps'
from /home/cmatthews/src/cannon/vendor/rails/activerecord/lib/active_record/timestamp.rb:53:in `create_without_callbacks'
from /home/cmatthews/src/cannon/vendor/rails/activerecord/lib/active_record/callbacks.rb:266:in `create'
from /home/cmatthews/src/cannon/vendor/rails/activerecord/lib/active_record/base.rb:2867:in `create_or_update_without_callbacks'
from /home/cmatthews/src/cannon/vendor/rails/activerecord/lib/active_record/callbacks.rb:250:in `create_or_update'
from /home/cmatthews/src/cannon/vendor/rails/activerecord/lib/active_record/base.rb:2538:in …Run Code Online (Sandbox Code Playgroud) 在Oracle 10g中,如何在两个varchar字段上添加唯一的不区分大小写的约束?例如,给定表中已有的以下记录:
"Stephen", "Swensen"
"John", "Smith"
Run Code Online (Sandbox Code Playgroud)
以下插入无效:
"stephen", "Swensen"
"John", "smith"
"stephen", "swensen"
Run Code Online (Sandbox Code Playgroud)
但是以下插入是有效的:
"Stephen", "Smith"
"John", "Swensen"
Run Code Online (Sandbox Code Playgroud) 我正在使用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 );
Run Code Online (Sandbox Code Playgroud)
而我想要的是
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` );
Run Code Online (Sandbox Code Playgroud)
在我的模型中,我一直在使用以下注释用于唯一列:
@DatabaseField( unique = true )
Run Code Online (Sandbox Code Playgroud)
有没有办法让这个工作?
我已经看过很多关于如何在appengine中实现唯一约束的文章和问题,但实际上我没有找到关于为什么不存在此功能的任何解释.
如果appengine开发人员认为最好不要实现这样的功能,我相信他们有充分的理由,但我有兴趣理解为什么他们这么做.
这个决定是否受到业绩问题的影响?为什么?
任何有关这方面的详细解释将不胜感激.
可以将特定列标记为unique = true.在web2py中处理多列唯一约束的最正确方法是什么?
例如,假设我有一个汇率表.它可以包含从货币到货币和汇率的列.拥有两个具有相同from和to货币的行是没有意义的.什么是最优雅或最正确的方式来使/从组合独特?
我创建了连接表t1和t2的表t1t2,如下所示:
CREATE TABLE t1t2(
id integer primary key,
t1_id integer,
t2_id integer,
foreign key(t1_id) references t1(id),
foreign key(t2_id) references t2(id));
Run Code Online (Sandbox Code Playgroud)
是否可以定义一个约束(限制),它只启用元组的唯一值(t1_id,t2_id)?或者我应该在应用程序中检查这个?
给出Postgres数据库中的以下三列:第一,第二,第三; 如何创建约束以使排列是唯一的?
例如,如果('foo', 'bar', 'shiz')存在于db中,('bar', 'shiz', 'foo')则将其排除为非唯一.
sql postgresql database-design constraints unique-constraint
我有这张桌子:
XPTO_TABLE (id, obj_x, date_x, type_x, status_x)
Run Code Online (Sandbox Code Playgroud)
我想创建适用于领域的唯一约束(obj_x, date_x, type_x),只有当status_x <> 5.
我试图创建这个,但Oracle说:
line 1: ORA-00907: missing right parenthesis
Run Code Online (Sandbox Code Playgroud)
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));
Run Code Online (Sandbox Code Playgroud)
什么是正确的语法?
在我们添加Unique key i.es Constraint之后,这个问题就开始了.
经常更新会议管理对象会删除与会议管理对象具有一对一反比关系的事件管理对象.
错误CoreData:注释:修复对象0x60c00009c4d0(0x60c000621e40)上多对多关系meetingList的丢失删除传播,错误为0x60800009ac20(0x60800023a360)
数据模型
我的核心数据模型中有三个实体
(CDEvent, CDMeeting, CDMLCheckin) .
Run Code Online (Sandbox Code Playgroud)
实体属性和关系如下所述:
独特的约束:
关系
完整说明:https://docs.google.com/document/d/1y2DQhBBLqjAP9eWbx5YpQhH7oVigxT_mcJDnPLlOMtQ/edit?usp=sharing
注意
请帮助我们,因为我们被打了一个多星期:(
我的PostgreSQL 9.3数据库中有一个索引:
CREATE INDEX index_foos_on_bar_and_baz ON foos USING btree (bar, baz);
Run Code Online (Sandbox Code Playgroud)
(来自使用Ruby on Rails的模式迁移)
索引存在并使事情变得更快.既然我已经清理了重复的foos,我想让这个索引变得独一无二:
CREATE UNIQUE INDEX index_foos_on_bar_and_baz ON foos USING btree (bar, baz);
Run Code Online (Sandbox Code Playgroud)
有没有办法改变现有的索引并使其独一无二?或者更容易/更快地删除现有索引并创建一个新的独特索引?
sql ×5
constraints ×2
postgresql ×2
sqlite ×2
conditional ×1
core-data ×1
indexing ×1
insert ×1
ios ×1
ios9 ×1
mysql ×1
objective-c ×1
oracle ×1
oracle10g ×1
ormlite ×1
ruby ×1
unique ×1
web2py ×1