关于多用户操作同一个表的问题(50分)

  • 主题发起人 主题发起人 fstao
  • 开始时间 开始时间
F

fstao

Unregistered / Unconfirmed
GUEST, unregistred user!
delphi的问题:
用Mssql7新建一表table1,如果多个用户对table1进行新增记录、删除记录、
修改记录和利用sql语句(update、insert和delete记录)时,应注意什么问题
呢?
注意:不是本地数据库!是在网络上运行的。
 
用transection呗.
 
这是并发控制,主要防止
1)读入脏数据
2)同时写造成数据(实体、参照)完整性遭破坏
一般数据库事物处理会提供自动的锁机制,
如果自己控制,可以自己加共享锁,排他锁,
但要防止死锁,如:两个进程同时锁住了对方想写的表
解决的方法是让他们串行化:依次执行。
 
注意用户同时对同一表操作对数据的破坏
用事物处理机制。。。
 
注意各种加锁的方式
ReadCommit和ReadUnCommit之间的区别
Update,Delete语句后的Where条件
等等因素都会影响共享
 
g622:
1、如何防止读入脏数据,能否举个例子?
2、我知道一般数据库事物处理会提供自动的锁机制,如果自己控制,可以自己加共享
锁,排他锁,但要防止死锁。解决的方法是让他们串行化:依次执行。如何串行化?
能否再举个例子?

mbobo:
“注意用户同时对同一表操作对数据的破坏用事物处理机制。。。”,如何用事务处
理机制?、、能否能否举个例子?

查海东:
ReadCommit和ReadUnCommit之间的区别是什么?


 
为何没有人理我呢?
我还有另一个问题:
数据库为:Mssql7。假如建一新表dbo.table1,
用Tdatabase连接mssql7,用Ttable连接dbo.table1,还有一个Tquery。
如果这样写SQl语句:
with query1 do
begin
close
sql.clear;
sql.add('update table1 set sign=''a''');
execsql;
end;

再添加Tupdatesql,其modifysql为:
update table1 set sign='a'

Tquery的updateobject连接Tupdatesql。运行程序时,把Ttable的Active为“True”时,执行sql语句,
出现好象是死机的样子。如果把Ttable的Active为“False”时,就可以执行sql语句。我听人说,要操作同
一表或处理事务,用Tquery+Tupdatesql来执行,但我这样做好象不起作用的?请指教!
还有我之所以要把Ttable的Active为“True”,是因为用Ttable来添加、删除和修改数据。
 
老兄,这个论坛说了不下1000遍了,不要用table:)
用query,或者存储过程什么的
 
delphi的问题:
数据库为:Mssql7。假如建一新表dbo.table1(主表)和dbo.table2(从表),这是远端数据库。
我发现大多数人使用Tquery来添加数据,而不是用Ttable。为什么?而且我还发现都很喜欢用事务处理,
这样做有什么好处呢?能否讲一讲呢?
假如DataModul里有MasterQuery和DetailQuery(两个都是Tquery),如果form1里添加DBedit1、DBedit2和
Dbgrid1,DBedit1和Dbedit2的Datasource指向Masterquery,而DBgrid1的datasource指向DetailQuery的,
我要添加数据时,我只有把Masterquery和DetailQuery的RequestLive=True。在Masterquery的AfterPost里
添加:
Database1.StartTransaction;
try
Masterquery.ApplyUpdates;
Detailquery.ApplyUpdates;
Database1.Commit;
except
Database1.Rollback;
raise;
end;
Masterquery.CommitUpdates;
Detailquery.CommitUpdates;


我这样做好不好?但我听坏蟑螂说过,在操作远端数据表的时候,不要把RequestLive=True,这样就等于使用
Ttable,违背C/S模型的初衷。但象我这种情况(用TDBedit显示主表的数据,用TDbgrid显示从表的数据),那
该如何做呢?
但还有一个问题,是要多人同时添加、修改同一表dbo.table1(主表)和dbo.table2(从表),而且还要用
Sql语句update来操作dbo.table1,就好象几个人同时添加、修改和删除同一个表dbo.table1(主表)和
dbo.table2(从表),其他人用sql语句Update来操作dbo.table1(主表)。
谁能给我一个例子?多谢了。
 
数据安全性、一致性问题主要靠数据库本身设计时的表间关系,以及triger来
保证,客户端并不考虑数据库端如何提供服务,仅仅关心操作是否成功。请查阅
数据库设计方面的书籍。
 
大家能不能提供准确的答案,不要让我模棱两可。就像我提出的问题,如何解决?本人急用。多谢了!
 
多人接受答案了。
 
后退
顶部