create table tb_Text ( P_Id number(30) primary key, rand nvarchar2(20) unique, pCode nvarchar2(20) unique ) insert into tb_Text(rand,pCode, values('" + rand+ "','" + pCode+ "')
pCode是唯一的,我在生成的时候会有重复,程序中一直提示ORA-00001: 违反唯一约束条件 (SCOTT.SYS_C0012033),这个约束是pCode的,怎么让它忽略这个继续完成其他行的插入呢?
try catch
试过,用了之后遇到重复的它给终止插入了,
@雪jenny: 不要怀疑机器
又说是唯一的,那你在生成的时候就不应该有重复
我用的Guid,生成大量的数据怎么着都会有一些是重复的吧,
我比较好奇的是,你代码中怎么产生这个guid的。照道理guid应该是不会重复的(100年之内,这个地球上基本碰不到同样gudi的人)。
因为他是mac+纳秒时间+软硬件信息,产生的。
另一个问题,你尝试新增,是每次都会报guid重复吗?如果是的话,那一定是你的代码问题。
for (int i = 0; i < num; i++) { rand = string.Join("", stringChars.OrderBy(d => Guid.NewGuid()).Take(len)); pCode = string.Join("", numChars.OrderBy(d => Guid.NewGuid()).Take(len3)); string str = "data source=orcl1;user=scott;password=tiger;"; OracleConnection conn = new OracleConnection(str); String sql = "insert into tb_Rand(rand,pCode) values('" + rand + "','" + pCode+ "')"; OracleCommand cmd = new OracleCommand(sql, conn); conn.Open(); rows = cmd.ExecuteNonQuery(); conn.Close(); }