我需要UNIQUE通过我正在开发的C#应用程序以特殊方式捕获对约束的违反.可以安全地假设它Error 2627总是对应于这种违规行为,以便我可以使用
if (ThisSqlException.Number == 2627)
{
// Handle unique constraint violation.
}
else
{
// Handle the remaing errors.
}
Run Code Online (Sandbox Code Playgroud)
?
我正在寻找java.util.Queue的实现或Google集合中表现得像Queue的东西,但也要确保队列中的每个元素都是唯一的.(所有进一步插入都没有效果)
这是可能的,还是我必须手工完成?
现在我正在使用一个带有LinkedList实现的Queue,并在插入之前检查唯一性.(我使用侧面Map来执行此操作,在队列之前/之后添加/删除侧面图中的元素).我不太喜欢它.
欢迎任何输入.如果它不在java.util包中,那么也许这是一个坏主意?
所以我知道在MySQL中可以在一个查询中插入多行,如下所示:
INSERT INTO table (col1,col2) VALUES (1,2),(3,4),(5,6)
Run Code Online (Sandbox Code Playgroud)
我想以类似的方式删除多行.我知道可以根据每行完全相同的条件删除多行,即
DELETE FROM table WHERE col1='4' and col2='5'
Run Code Online (Sandbox Code Playgroud)
要么
DELETE FROM table WHERE col1 IN (1,2,3,4,5)
Run Code Online (Sandbox Code Playgroud)
但是,如果我想在一个查询中删除多行,每行都有一组独有的条件,该怎么办?这样的东西就是我要找的东西:
DELETE FROM table WHERE (col1,col2) IN (1,2),(3,4),(5,6)
Run Code Online (Sandbox Code Playgroud)
有谁知道这样做的方法?还是不可能?
我有一个像这样的表:
|UserId | ContactID | ContactName
---------------------------------------
| 12456 | Ax759 | Joe Smith
| 12456 | Ax760 | Mary Smith
| 12458 | Ax739 | Carl Lewis
| 12460 | Ax759 | Chuck Norris
| 12460 | Bx759 | Bruce Lee
Run Code Online (Sandbox Code Playgroud)
我需要为此表添加一个约束,以便没有用户可以拥有重复的联系人ID.用户正在从各种外部系统导入数据,因此ContactId不是全面唯一的,但在每个用户的基础上是唯一的.
我知道如何基于单列创建唯一和非空的约束,但是如何在2列中创建唯一的约束?
sql-server sql-server-2005 constraints unique-constraint sql-server-2008
关于我之前问过的一个问题,我正在跟进,我试图寻求从一个愚蠢/写得不好的mysql查询到postgresql的转换.我相信我成功了.无论如何,我正在使用手动从mysql数据库移动到postgres数据库的数据.我正在使用看起来像这样的查询:
"""
UPDATE krypdos_coderound cru
set is_correct = case
when t.kv_values1 = t.kv_values2 then True
else False
end
from
(select cr.id,
array_agg(
case when kv1.code_round_id = cr.id
then kv1.option_id
else null end
) as kv_values1,
array_agg(
case when kv2.code_round_id = cr_m.id
then kv2.option_id
else null end
) as kv_values2
from krypdos_coderound cr
join krypdos_value kv1 on kv1.code_round_id = cr.id
join krypdos_coderound cr_m
on cr_m.object_id=cr.object_id
and cr_m.content_type_id =cr.content_type_id
join krypdos_value kv2 on kv2.code_round_id = cr_m.id
WHERE
cr.is_master= …Run Code Online (Sandbox Code Playgroud) django postgresql database-integrity duplicates unique-constraint
我正在尝试使用单词列表填充SQL表.表本身很简单:
CREATE TABLE WORDS(
ID BIGINT AUTO_INCREMENT,
WORD VARCHAR(128) NOT NULL UNIQUE,
PRIMARY KEY(ID)
);
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是:当我执行以下插入时,背靠背
INSERT INTO WORDS(WORD) VALUES('Seth');
INSERT INTO WORDS(WORD) VALUES('seth');
Run Code Online (Sandbox Code Playgroud)
第二个插入失败,出现约束违规("键'WORD'的重复输入'seth'").
如何使UNIQUE约束WORD区分大小写?
假设在Ruby中进行以下数据库迁移:
create_table :question_votes do |t|
t.integer :user_id
t.integer :question_id
t.integer :vote
t.timestamps
end
进一步假设我希望DB中的行包含唯一(user_id,question_id)对.为了实现这一目标,在模型中投入的正确粉尘是什么?
validates_uniqueness_of :user_id, :question_id似乎只是通过用户ID使行唯一,并且通过问题ID使其唯一,而不是由对唯一.
我正在尝试使用ALTER IGNORE TABLE + UNIQUE KEY从MySQL表中删除重复项.MySQL文档说:
IGNORE是标准SQL的MySQL扩展.如果新表中的唯一键上存在重复项,或者启用了严格模式时出现警告,它将控制ALTER TABLE的工作方式.如果未指定IGNORE,则复制将中止并在发生重复键错误时回滚.如果指定了IGNORE,则只使用第一行在唯一键上具有重复项的行.其他冲突的行将被删除.不正确的值将截断为最接近的匹配可接受值.
当我运行查询时......
ALTER IGNORE TABLE table ADD UNIQUE INDEX dupidx (field)
Run Code Online (Sandbox Code Playgroud)
...我仍然收到错误#1062 - 关键'dupidx'重复输入'blabla'.
假设一个简单的Grails域类:
class Account {
String countryId;
String userName;
String password;
static constraints = {
...???...
}
}
Run Code Online (Sandbox Code Playgroud)
要求用户名对于特定countryId是唯一的,因此在两列上必须存在唯一约束.如何在约束定义中表达这一点?
orm grails unique-constraint grails-validation grails-domain-class
我有兴趣了解开发人员更喜欢使用哪种技术来强制SQL Server中的唯一性:UNIQUE CONSTRAINT或UNIQUE INDEX.鉴于每种物理实现方式差异不大,您如何确定哪种方法最佳?
是否有其他原因可以评估最佳解决方案?
一个或另一个有数据库管理优势吗?
mysql ×3
sql-server ×2
collections ×1
constraints ×1
django ×1
duplicates ×1
grails ×1
guava ×1
java ×1
model ×1
orm ×1
postgresql ×1
queue ×1
sql ×1
unique-index ×1
validation ×1
varchar ×1