由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Database版 - 再问大虾:对那些违反contraint的数据是如何处理的?
相关主题
How to handle inserting value to Identity column in sql server 2005help about SQL for ACCESS
面试问题How would you improve table insert performance? (give five or more ideas)query: in sql server 2005
Sr. Oracle Development DBADeadlock on merge (oracle)
我教要逆天了random error for CAST( MONEY AS VARCHAR)
urgent help! insert value into table一个ETL process 里边 change data capture 的问题, 大家讨论
a simple question about insert也問 Common Table Expression 问题
Help on Sql server huge table performance做DW的,如何估计/衡量一项任务的工作量?
多对多relation?问个问题,请高手指教
相关话题的讨论汇总
话题: data话题: db话题: insert
进入Database版参与讨论
1 (共1页)
t***o
发帖数: 1353
1
对那些违反contraint的数据是如何处理的? 比如, 我insert的时候, 有一个column
的data 违反了某一栏的unique条件, 那么这整个insert的data在执行失败后就丢失了
?(好像LOG里的东西,不能直接读吧)。
按照我的理解, 有2中方案:
1.front-end, programming side做好data validation,
2.先把这些data写进一个temp table里。
想问问大虾们都是咋处理的? 是不是写个啥高级点的sp, 或者trigger?
c*****d
发帖数: 6045
2

column
正确
1和2都可以,不过不很明白你的业务要求,这些不符合要求的记录也要保存下来?

【在 t***o 的大作中提到】
: 对那些违反contraint的数据是如何处理的? 比如, 我insert的时候, 有一个column
: 的data 违反了某一栏的unique条件, 那么这整个insert的data在执行失败后就丢失了
: ?(好像LOG里的东西,不能直接读吧)。
: 按照我的理解, 有2中方案:
: 1.front-end, programming side做好data validation,
: 2.先把这些data写进一个temp table里。
: 想问问大虾们都是咋处理的? 是不是写个啥高级点的sp, 或者trigger?

B*****g
发帖数: 34098
3
2. In application
try
{
}
catch {}

【在 c*****d 的大作中提到】
:
: column
: 正确
: 1和2都可以,不过不很明白你的业务要求,这些不符合要求的记录也要保存下来?

w*r
发帖数: 2421
4
if it is transaction based data, the commit/rollback should be used in
transaction to avoid dirty data in SQL blocks and exceptions should be throw
out and handled by application.
If it is ETL / ELT process, the data validation should be handled in the
loading logic and branched to error table before the data reached the load
utility stage. Usually if you use load utility error handling table, it will
be much slower than a customized error handling table both loaded by load
utility.

column

【在 t***o 的大作中提到】
: 对那些违反contraint的数据是如何处理的? 比如, 我insert的时候, 有一个column
: 的data 违反了某一栏的unique条件, 那么这整个insert的data在执行失败后就丢失了
: ?(好像LOG里的东西,不能直接读吧)。
: 按照我的理解, 有2中方案:
: 1.front-end, programming side做好data validation,
: 2.先把这些data写进一个temp table里。
: 想问问大虾们都是咋处理的? 是不是写个啥高级点的sp, 或者trigger?

t***o
发帖数: 1353
5
我们这里的问题是, insert里有一个column的记录, 是用一个sp产生的。。。但是,
有时候,这个新产生的值不unique,所以, 被插进table的时候, 就会被报错, 但是
, 我不想都掉那个data, 只想在run一下那个sp,在产生一个新的。。。

【在 c*****d 的大作中提到】
:
: column
: 正确
: 1和2都可以,不过不很明白你的业务要求,这些不符合要求的记录也要保存下来?

B*****g
发帖数: 34098
6
how do you generate this value?

【在 t***o 的大作中提到】
: 我们这里的问题是, insert里有一个column的记录, 是用一个sp产生的。。。但是,
: 有时候,这个新产生的值不unique,所以, 被插进table的时候, 就会被报错, 但是
: , 我不想都掉那个data, 只想在run一下那个sp,在产生一个新的。。。

t***o
发帖数: 1353
7
大虾, 你讲的有点高深。。。窝不太懂

throw
will

【在 w*r 的大作中提到】
: if it is transaction based data, the commit/rollback should be used in
: transaction to avoid dirty data in SQL blocks and exceptions should be throw
: out and handled by application.
: If it is ETL / ELT process, the data validation should be handled in the
: loading logic and branched to error table before the data reached the load
: utility stage. Usually if you use load utility error handling table, it will
: be much slower than a customized error handling table both loaded by load
: utility.
:
: column

t***o
发帖数: 1353
8
我们公司用的文物级的一个叫Goldmine的老database. 我执行的时候就是这样
exec master..xp_gmnewrecid 'Master', @recidval OUTPUT
select @recidval
这个xp_gmnewrecid, call 了一个dll文件, 那个文件我就看不见了。。。(看图)
所以, 我能做的, 就是保证这个recid不是duplicated的。

【在 B*****g 的大作中提到】
: how do you generate this value?
w*r
发帖数: 2421
9
okey, the solution is still use application to throw your data into a error
file/table depends on your
environment. And then use a batch to process those error data. When I say
batch, I means a separated
application which takes that error file / table when system is not busy and
try the insert on after
another in order again.
Your issue sounds to me like when you get this recidval, due to the parallel
nature of the application,
you are not guaranteed to have a atomic transaction to get a unique

【在 t***o 的大作中提到】
: 我们公司用的文物级的一个叫Goldmine的老database. 我执行的时候就是这样
: exec master..xp_gmnewrecid 'Master', @recidval OUTPUT
: select @recidval
: 这个xp_gmnewrecid, call 了一个dll文件, 那个文件我就看不见了。。。(看图)
: 所以, 我能做的, 就是保证这个recid不是duplicated的。

t***o
发帖数: 1353
10
谢谢。。。我去试试(我可能还需要补一些功课才能学会, 不是DB出身。。。)

error
and
parallel

【在 w*r 的大作中提到】
: okey, the solution is still use application to throw your data into a error
: file/table depends on your
: environment. And then use a batch to process those error data. When I say
: batch, I means a separated
: application which takes that error file / table when system is not busy and
: try the insert on after
: another in order again.
: Your issue sounds to me like when you get this recidval, due to the parallel
: nature of the application,
: you are not guaranteed to have a atomic transaction to get a unique

相关主题
a simple question about inserthelp about SQL for ACCESS
Help on Sql server huge table performancequery: in sql server 2005
多对多relation?Deadlock on merge (oracle)
进入Database版参与讨论
B*****g
发帖数: 34098
11
lvIsInsertSucess = "F"
while (lvIsInsertSucess == "F")
{
try
{
get id
insert
lvIsInsertSucess = "T"
}
catch
{
do nothing
}
}

【在 t***o 的大作中提到】
: 谢谢。。。我去试试(我可能还需要补一些功课才能学会, 不是DB出身。。。)
:
: error
: and
: parallel

B*****g
发帖数: 34098
12
赞。不会DB的搞DB,会DB的在灌水

【在 t***o 的大作中提到】
: 谢谢。。。我去试试(我可能还需要补一些功课才能学会, 不是DB出身。。。)
:
: error
: and
: parallel

j*****n
发帖数: 1781
13
re

【在 B*****g 的大作中提到】
: 赞。不会DB的搞DB,会DB的在灌水
w*r
发帖数: 2421
14
不要这样,会无端端得给server带来无数request, flood server只会降低拿到unique
key的probability

【在 B*****g 的大作中提到】
: lvIsInsertSucess = "F"
: while (lvIsInsertSucess == "F")
: {
: try
: {
: get id
: insert
: lvIsInsertSucess = "T"
: }
: catch

B*****g
发帖数: 34098
15
我觉得lz的系统肯定没几个人用,这种dup也就是偶尔发生,要是常年发生,系统早死
了。

unique

【在 w*r 的大作中提到】
: 不要这样,会无端端得给server带来无数request, flood server只会降低拿到unique
: key的probability

w*r
发帖数: 2421
16
那也不能用这样的infinite look来搞,本来搞不死的系统就给你这样搞死了

【在 B*****g 的大作中提到】
: 我觉得lz的系统肯定没几个人用,这种dup也就是偶尔发生,要是常年发生,系统早死
: 了。
:
: unique

B*****g
发帖数: 34098
17
呵呵,改一下.
InsertCount = 0
while InsertCount < 5)
{
try
{
get id
insert
InsertCount = 5
}
catch
{
InsertCount ++

if(InsertCount == 5)
{
print("rp也太差了吧")
}
}
}

早死

【在 w*r 的大作中提到】
: 那也不能用这样的infinite look来搞,本来搞不死的系统就给你这样搞死了
w*r
发帖数: 2421
18
中!
这成

【在 B*****g 的大作中提到】
: 呵呵,改一下.
: InsertCount = 0
: while InsertCount < 5)
: {
: try
: {
: get id
: insert
: InsertCount = 5
: }

t***o
发帖数: 1353
19
不要这样自责吗。。。哈哈。。。
我学的很杂,某日听说做DB能挣大钱, 就打算削尖了头, 像DB靠拢。。。特别是看到
你老人家,一遍灌水, 一边数钱, 更坚定了我往死里学的决心。。。。
谢谢Beijing 和Wyr.

【在 B*****g 的大作中提到】
: 赞。不会DB的搞DB,会DB的在灌水
B*****g
发帖数: 34098
20
有啥可数的,俺挣的只有大牛门的一半都不到

【在 t***o 的大作中提到】
: 不要这样自责吗。。。哈哈。。。
: 我学的很杂,某日听说做DB能挣大钱, 就打算削尖了头, 像DB靠拢。。。特别是看到
: 你老人家,一遍灌水, 一边数钱, 更坚定了我往死里学的决心。。。。
: 谢谢Beijing 和Wyr.

相关主题
random error for CAST( MONEY AS VARCHAR)做DW的,如何估计/衡量一项任务的工作量?
一个ETL process 里边 change data capture 的问题, 大家讨论问个问题,请高手指教
也問 Common Table Expression 问题Bulk merge? (转载)
进入Database版参与讨论
w*r
发帖数: 2421
21
可以了,不少了,DB上没有什么大牛,DB的真正的革新还没有实际应用的出现呢,只是
在理论上天天玩虚的。所以现在的都不是什么牛,最多是肥猪和瘦猪之间的差别

【在 B*****g 的大作中提到】
: 有啥可数的,俺挣的只有大牛门的一半都不到
B*****g
发帖数: 34098
22
我不愿意当瘦猪

【在 w*r 的大作中提到】
: 可以了,不少了,DB上没有什么大牛,DB的真正的革新还没有实际应用的出现呢,只是
: 在理论上天天玩虚的。所以现在的都不是什么牛,最多是肥猪和瘦猪之间的差别

t***o
发帖数: 1353
23
那给咱科普一下DB最新的方向。。。让咱早早看到了, 也好朝着麦加的方向前进吗。
。。。

【在 w*r 的大作中提到】
: 可以了,不少了,DB上没有什么大牛,DB的真正的革新还没有实际应用的出现呢,只是
: 在理论上天天玩虚的。所以现在的都不是什么牛,最多是肥猪和瘦猪之间的差别

B*****g
发帖数: 34098
24
As words from a big java niu: "db is dying, all java later"

【在 t***o 的大作中提到】
: 那给咱科普一下DB最新的方向。。。让咱早早看到了, 也好朝着麦加的方向前进吗。
: 。。。

w*r
发帖数: 2421
25
这位牛是谁啊?

【在 B*****g 的大作中提到】
: As words from a big java niu: "db is dying, all java later"
B*****g
发帖数: 34098
26
好虫

【在 w*r 的大作中提到】
: 这位牛是谁啊?
j*****n
发帖数: 1781
27
key BDA earns 200K+, so ....

【在 B*****g 的大作中提到】
: 有啥可数的,俺挣的只有大牛门的一半都不到
t***o
发帖数: 1353
28
我倒。。。java programmer已经多的像蝗虫一样。。。。
北京,麻烦再给看一些这个oracle connect 的问题, 那个SID填啥呀?或者,有没有
办法不建立connection,就用里面带的sample database 学习呀?

【在 B*****g 的大作中提到】
: As words from a big java niu: "db is dying, all java later"
w*r
发帖数: 2421
29
别理好虫,偶就是DB/JAVA两手抓,两手都要硬

【在 B*****g 的大作中提到】
: 好虫
B*****g
发帖数: 34098
30
换成service_name.

【在 t***o 的大作中提到】
: 我倒。。。java programmer已经多的像蝗虫一样。。。。
: 北京,麻烦再给看一些这个oracle connect 的问题, 那个SID填啥呀?或者,有没有
: 办法不建立connection,就用里面带的sample database 学习呀?

相关主题
请教一个问题,big data入库面试问题How would you improve table insert performance? (give five or more ideas)
TIMESTAMP的作用是啥?Sr. Oracle Development DBA
How to handle inserting value to Identity column in sql server 2005我教要逆天了
进入Database版参与讨论
B*****g
发帖数: 34098
31
俺java硬不起来了。

【在 w*r 的大作中提到】
: 别理好虫,偶就是DB/JAVA两手抓,两手都要硬
j*****n
发帖数: 1781
32
I have no java at all :)

【在 B*****g 的大作中提到】
: 俺java硬不起来了。
1 (共1页)
进入Database版参与讨论
相关主题
问个问题,请高手指教urgent help! insert value into table
Bulk merge? (转载)a simple question about insert
请教一个问题,big data入库Help on Sql server huge table performance
TIMESTAMP的作用是啥?多对多relation?
How to handle inserting value to Identity column in sql server 2005help about SQL for ACCESS
面试问题How would you improve table insert performance? (give five or more ideas)query: in sql server 2005
Sr. Oracle Development DBADeadlock on merge (oracle)
我教要逆天了random error for CAST( MONEY AS VARCHAR)
相关话题的讨论汇总
话题: data话题: db话题: insert