多线程同时对table1进行插入操作,某一时刻同时对表中没有的项x进行写操作,它们同时请求锁table1
线程1锁住了插入了x,线程2在线程1释放后也锁住table1 插入x;
问题:如何让他们不要插入重复项?
线程1锁住了插入了x,线程2在线程1释放后也锁住table1 插入x;
问题:如何让他们不要插入重复项?
解决方案 »
- SELECT语句怎么实现这样的过滤?
- 如何使mysql命令行界面的输出,不带由+-|组成的边框。
- [小问题6--删除表数据]
- 求救~!请教各位大吓帮忙!!---续
- 订房系统的表用哪种类型比较好?
- Mysql经验足者,进来看看版本问题,select * from (select * from table) t1在Mysql3.23.56 for linux报错
- 那位有Mysql 在Liunx下安装的详细步骤,最好是mysql-4.0.15a.tar.gz的安装方法
- 请教一个MySQL的查询语句
- 菜鸟问题!
- 求助:MySQl优化,设置索引和优化SQL语句等多问题
- 请教一个设计数据库字段的问题
- mfc 无法连接到远程mysql数据库。。
2)SELECT X
3) INSERT
4)解锁。
写操作时可以放到事务里面,innodb的MVCC可以保证并发事务。
如果要保证值唯一的话,可以在该字段上建立唯一索引,但是切记写操作时别使用replace,而应该使用insert。
Lockroutertable="lock table table1 write"
cur1.execute(Lockroutertable)
SELECT="select id from table where ip=%s"
cur1.execute(SELECT,router)
result=cur1.fetchone()
if result==None:
INSERT="insert table1 value ('','','')"
else:
ID=result[0]