我需要在读写一个表的时候琐住它
但是不知道在sql中如何锁住
比如我想在执行
insert into gao (...) values(...)
的时候锁住, 我该怎么办?

解决方案 »

  1.   

    使用MUTEX、EVENT等互斥量吧
    就想处理线程的同步问题一样。
      

  2.   

    不是这样
    我想在sql语句中如此
    因为别人也可能操作那个表
    不一定通过我写的程序
    我就另写了个sql存储过程
    让大家都调用这个存储过程
    这个里面需要锁住那个表
      

  3.   

    CNMicrosoft(°¢à-),您还是多看看数据库方面的书吧。
    的确可以办到,可以通过SQL语句(我记不清了),去数据库版问问
      

  4.   

    太简单了,你使用Oracle数据库吗
    select * from table for update of table.column锁住列
    select * from table for update table 锁住表
      

  5.   

    使用select 或update 语句中的optimizer_hints 部分
    SQL的Books Online 
    上有说明白的
      

  6.   


    ado本身就带这种功能吧
      

  7.   

    /* Example 1 */
    SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
    GO
    BEGIN TRANSACTION
    GO
    SELECT * FROM authors
    GO/* Example 2 */
    SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
    GO
    BEGIN TRANSACTION
    GO
    DECLARE abc CURSOR STATIC FOR
    SELECT * FROM authors
    GO
    OPEN abc
    GO将事务隔离级别设为可重复读取意味着:Example 1 中的独立 SELECT 语句和 Example 2 中的 DECLARE CURSOR 所包含的 SELECT 语句在所读取的每一行上都生成共享锁,并且这些共享锁将一直保持到事务提交或回滚。