好的,我想构建一个非常复杂的系统,允许用户在将数据插入Mysql DB之前复杂地操作数据。
因此,该系统必须具有:
好了,现在,执行功能1非常困难,功能2不是太难,但如果我们实际修改DB中的旧数据,功能3将非常难。
所以,这是我的解决方案,而不是花费大量时间来构建功能3(&我们不确定它是否没有错误,因为它太复杂了),我决定不构建功能3,但只需将新数据插入Db&删除旧数据。这意味着函数3正好是函数1,唯一不同的是我们必须删除函数1中插入的旧数据。
所以,我决定使用Auto-Increment&在Mysql中的Int。
但是,由于我们可能会多次更新数据(可能是300到500行)(可能是4年内的20次),这意味着我们必须删除旧数据20次&自动增量字段不断增加数字。
我的问题是,
“不构建更新功能,并且像插入功能一样构建更新功能”是一个好的或坏的解决方案?
第二,“如果我们像插入函数一样构建更新函数,那么它是一个稳定的系统吗?”
第三,“如果我们像插入函数一样构建更新函数,那么1天后我们会用完数字(max int是2147483647)?”
在我看来,我更喜欢解决方案“像插入功能一样构建更新功能”,因为我们可以将旧数据保留为以前的版本,我们甚至不需要删除它和它。它节省了我很多次。另外,2147483647太大了。生命是短暂的,你这么认为吗?
注意:
答案 0 :(得分:1)
首先,我不得不说这是一个非常糟糕的设计,不要这样做! 您可能会遇到严重的同步错误,例如,如果您正在更新(删除旧的并插入新的)并且有人想要读取数据,该怎么办?他可以得到一个错误,换句话说,这是非常不稳定的。
使用简单的更新函数,增量值为id,
准备像update mytable set v1=?, v2=?, ...., vn=? where id=?
这样的更新语句,然后重新填充所有数据。
第二,是的,int只是2 ^ 31,但你可以指定一个更大的整数,但同样,这是一个糟糕的解决方案