1、我想在设计一个数据库时候,比如会员权限,这个是设置在会员表里设置个字段用(0代表普通会员,1代表VIP ,2代表贵宾,3代表管理员等)还是新建个用户权限表?
========
都可以,得看需求,复杂权限模型,得选择后者
2、在同时对多表操作的时候是不是一定要多条SQL语句啊?打个比方,比如在做网上书店时候,在修改书目信息的时候,修改的内容设计到2个表,是不是要同时建立两个连接和两个SQL语句?谢谢!=============
得在一个连接(也称会话)中完成,这才能保证是一个事务(不讨论分布式事务),
多张表操作一般需要多条sql语句,这些语句得在一次连接中完成
========
都可以,得看需求,复杂权限模型,得选择后者
2、在同时对多表操作的时候是不是一定要多条SQL语句啊?打个比方,比如在做网上书店时候,在修改书目信息的时候,修改的内容设计到2个表,是不是要同时建立两个连接和两个SQL语句?谢谢!=============
得在一个连接(也称会话)中完成,这才能保证是一个事务(不讨论分布式事务),
多张表操作一般需要多条sql语句,这些语句得在一次连接中完成
SqlCommand cmd=new SqlCommand();
cmd.Connection=conn;
conn.Open();
SqlTransaction tran=conn.BeginTransaction();//定义事务对象
cmd.Transaction=tran;
try
{
cmd.CommandText="update areaSort set orderid="+uporderid+" where id="+id.ToString();
cmd.ExecuteNonQuery();
cmd.CommandText="update areaSort set orderid="+oldorderid+" where id="+upid;
cmd.ExecuteNonQuery();
tran.Commit();
conn.Close();
}
catch
{
tran.Rollback();
conn.Close();
}
上述只要有一个cmd没有成功,则会退回原始状态。
看情况
2
可以建立一次连接,两个SQL语句,如果要求不高,可以在数据库中建立一个存储过程,直接调用该存储过程,否则最好用事务
事务:BEGIN TRANSACTION
....
COMMIT TRANSACTION