如何实现在PostgreSQL中不重复插入 如题:在连接PostgreSQL后,如何用sql语句,实现保证某一列或某几列值不重复的插入。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 无法用SQL语句来保证。需要在表的定义上来实现,定义某列为 unique key 或者 primary key 就行了。 如果这几列是主键、唯一索引,可以,否则用TRIGGER解决 用unique作限制:iihero=# create table t1(id int, col2 varchar(32), col3 int, unique(col2, col3));NOTICE: CREATE TABLE / UNIQUE will create implicit index "t1_col2_key" for table "t1"CREATE TABLEiihero=# insert into t1 values(1, 'abc', 2);INSERT 0 1iihero=# insert into t1 values(2, 'abc', 2);ERROR: duplicate key value violates unique constraint "t1_col2_key"DETAIL: Key (col2, col3)=(abc, 2) already exists.STATEMENT: insert into t1 values(2, 'abc', 2);ERROR: duplicate key value violates unique constraint "t1_col2_key"DETAIL: Key (col2, col3)=(abc, 2) already exists.iihero=# 如果定义某列为 unique key 或者 primary key后,插入时如果重复,应该会停止插入吧,因为我是用java执行查询后插入的,这样遇到重复时java程序也就停了,能不让java程序停止,而是跳过进行下一条插入吗? 你 java 中的插入语句是什么样?java 中的 try catch不就是专门用于这种情况的吗? for (...){try{ insert...}catch (exception){ }} mysqld无法启动的问题 请问个SQL语句应该如何优化? unix_timestamp()转换问题 出现 table '#sql- xx' is full !!! 继续提问个 关于MySQL主外键的建立.. 主从同步问题 请教:这个procedure语法上有没有错误啊?谢谢 帮我一下,帮我翻译一下下面的错误信息,谢谢! 求修正存储过程中查询赋值的SQL语句~我是新手 C/C++程序里通过SSL连接mysql失败 win xp 系统下MYSQL 安装没错 关机重启无法正常启动 问一个sql语句问题
iihero=# create table t1(id int, col2 varchar(32), col3 int, unique(col2, col3));
NOTICE: CREATE TABLE / UNIQUE will create implicit index "t1_col2_key" for table "t1"
CREATE TABLE
iihero=# insert into t1 values(1, 'abc', 2);
INSERT 0 1
iihero=# insert into t1 values(2, 'abc', 2);
ERROR: duplicate key value violates unique constraint "t1_col2_key"
DETAIL: Key (col2, col3)=(abc, 2) already exists.
STATEMENT: insert into t1 values(2, 'abc', 2);
ERROR: duplicate key value violates unique constraint "t1_col2_key"
DETAIL: Key (col2, col3)=(abc, 2) already exists.
iihero=#
如果定义某列为 unique key 或者 primary key后,插入时如果重复,应该会停止插入吧,因为我是用java执行查询后插入的,这样遇到重复时java程序也就停了,能不让java程序停止,而是跳过进行下一条插入吗?
for (...)
{
try
{
insert...
}
catch (exception)
{
}
}