社区
C#
帖子详情
关于数据库插入的问题
于吉小妖
2010-06-21 10:17:01
系统设计是这样的,在新插入一条数据的时候 先查找数据库中某一字段的数值,在此基础上+1,如:当插入的时候查到数据库某一字段的数值是333001,那么插入的这条数据此字段的数值就是333002,但是此会造成一个问题,当两个用户同时插入的时候 就可能会产生2条333002。如何解决这个问题。
备注:不能使用自增长。不使用随机数,随机数会导致数值无规律。
...全文
143
22
打赏
收藏
关于数据库插入的问题
系统设计是这样的,在新插入一条数据的时候 先查找数据库中某一字段的数值,在此基础上+1,如:当插入的时候查到数据库某一字段的数值是333001,那么插入的这条数据此字段的数值就是333002,但是此会造成一个问题,当两个用户同时插入的时候 就可能会产生2条333002。如何解决这个问题。 备注:不能使用自增长。不使用随机数,随机数会导致数值无规律。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
22 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
gohappy2008
2010-06-22
打赏
举报
回复
SQL Server为我们提供了UniqueIdentifier数据类型,并提供了一个生成函数NEWID( ),使用NEWID( )可以生成一个唯一的UniqueIdentifier。UniqueIdentifier在数据库中占用16个字节,出现重复的概率非常小,以至于可以认为是0。我们经常从注册表中看到类似{45F0EB02-0727-4F2E-AAB5-E8AEDEE0CEC5}的东西实际上就是一个UniqueIdentifier,Windows用它来做COM组件以及接口的标识,防止出现重复。在.NET里管UniqueIdentifier称之为GUID(Global Unique Identifier)。在C#中可以使用如下命令生成一个GUID:
Guid u = System.Guid.NewGuid();
一切为了你
2010-06-22
打赏
举报
回复
使用事务!
zhanggd614
2010-06-22
打赏
举报
回复
或者用存储过程这样
zhanggd614
2010-06-22
打赏
举报
回复
插入数据的时候先生成一个自加一的ID,再通过ID分配你要的流水账号
老Key
2010-06-22
打赏
举报
回复
在第二次插入的时候,在去读取一次,如果又了333002,就在自动加1,或者不让插入即可
如菜鸟
2010-06-22
打赏
举报
回复
我也想知道呢,期待解决
于吉小妖
2010-06-22
打赏
举报
回复
mark 继续
maxwellno1
2010-06-22
打赏
举报
回复
[Quote=引用 7 楼 gxingmin 的回复:]
插入时加锁,用户甲插入时,用户乙不能操作
[/Quote]
正解
宇峰科技
2010-06-22
打赏
举报
回复
在插入时再获取新的ID,然后+1,最好用存储过程比较好
s8975565
2010-06-22
打赏
举报
回复
[Quote=引用 19 楼 s8975565 的回复:]
在数据库的字段上加上UNIQUE 如果执行失败 让他再加1
[/Quote]
给分啊 O(∩_∩)O~
s8975565
2010-06-22
打赏
举报
回复
在数据库的字段上加上UNIQUE 如果执行失败 让他再加1
-深白色-
2010-06-22
打赏
举报
回复
每次插入前lock住表,先检查id是否已经存在,如果存在,+1,如果还存在,继续+1直到不存在
插入完成以后释放锁。这个用存储过程很容易实现。
这样可确保唯一性,但是锁表的时候,如果插入动作很频繁,可能会导致性能上的一些损失。
yanele
2010-06-22
打赏
举报
回复
[Quote=引用 12 楼 guoluren_kang 的回复:]
在第二次插入的时候,在去读取一次,如果又了333002,就在自动加1,或者不让插入即可
[/Quote]
每次做插入动作前进行检查数据库里的最大编号(往往单据上之前会自动生成一个编号),
如果没有重复就直接插入数据,如果单据之前产生的号被占用,自动在数据库里最大编号上增加1,
当前最好增加的号能给用户以提示,并刷新界面,否则在原单据上进行修改就不好处理了!
zhuming8882000
2010-06-21
打赏
举报
回复
[Quote=引用 7 楼 gxingmin 的回复:]
插入时加锁,用户甲插入时,用户乙不能操作
[/Quote]
具体给个例子行不?
如果用户很多,一个人占着页面的话,是不是其他用户都不可以插入数据了?
gxingmin
2010-06-21
打赏
举报
回复
插入时加锁,用户甲插入时,用户乙不能操作
于吉小妖
2010-06-21
打赏
举报
回复
顶下 接受更多的建议 谢ls
yanele
2010-06-21
打赏
举报
回复
路过,期待解决方法。
shixiujin
2010-06-21
打赏
举报
回复
[Quote=引用 2 楼 tkascor 的回复:]
使用事务. 下一次插入, 要上一次完成之后才能插入~
[/Quote]
支持...
zhuming8882000
2010-06-21
打赏
举报
回复
我也遇到了楼主的问题,我用的方法是写了一个存储过程,只有在插入的时刻才会把新的数据插入到数据库中,也就是事先不会返回一个这样的值,这样的情况只有在两个用户同时插入一条数据时 可能会报错。自己仍然在想解决方案中,目前这种方法多个用户只要不在同一时刻(非常精确的一样)就不会出现问题。
2楼的请问下事务的怎么样实现?
tkscascor
2010-06-21
打赏
举报
回复
使用事务. 下一次插入, 要上一次完成之后才能插入~
加载更多回复(2)
oracle11g官方中文帮助文档 高清完整版
- SQL语言:用于查询、
插入
、更新和删除
数据库
中的数据。 - PL/SQL:Oracle的编程语言扩展,支持过程化编程,常用于编写存储过程和触发器。 4. **安全性** - 用户与角色:管理
数据库
访问权限,通过用户和角色...
SQL语句大全(经典珍藏版)
SQL(Structured Query Language)是用于管理和操作关系
数据库
的语言,它被广泛应用于数据查询、更新、
插入
和删除等操作。这份“SQL语句大全(经典珍藏版)”显然是一个全面介绍SQL语言的学习资料,适合初学者逐步提升...
往
数据库
插入
NULL的
问题
有时候,我们想往
数据库
插入
记录的时候,某些字段并不需要
插入
实际的值,保持它的NULL。 单独的SQL语句并不难写 Insert into table(field1,field2,field3)Values(data1,data2,NULL); 但是在程序中,data1,data2...
数据库
数据快速
插入
的方法
一、insert 一条一条
插入
数据到
数据库
中。 不适合大量数据的
插入
。 二、LOAD DATA INFILE 方案 三、extend insert语句(批量
插入
) 四、使用 mysqlimport 导入数据 优先文案: 二、LOAD DATA INFILE 如果你...
数据
插入
数据库
出现中文乱码
问题
数据
插入
数据库
出现中文乱码
问题
1-1 采用post方式提交,在注册页面输入中文名注册时,发现
数据库
中显示的姓名是乱码; 解决:首先考虑是
数据库
这边的
问题
,还是在提交到
数据库
的时候就是乱码。 2-1 采用post方式...
C#
111,097
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章