select添共享锁,insert、update、delete加排他锁,事物加锁的sql语句

select加共享锁,insert、update、delete加排他锁,事物加锁的sql语句
谁能帮我写下select加共享锁示例?
                       insert、update、delete加排他锁示例?
                       事物加锁示例?
------解决方案--------------------
共享锁默认的,不用加。update的:
USE AdventureWorks2008R2;
GO
UPDATE Production.Product
WITH (TABLOCK)
SET ListPrice = ListPrice * 1.10
WHERE ProductNumber LIKE 'BK-%';
GO

其他你自己改吧。
------解决方案--------------------
共享锁,也就是S锁:

select * from 表 或者
select * from 表 where  字段= 值

这个在运行时,都会自动加锁,具体根据需要访问的对象,加上S锁,比如记录会加上S锁。
------解决方案--------------------


下面演示一个读-写冲突引发死锁并解决问题的过程,你参考参考!
查询1中的语句
create database mydb 
go

use mydb
go

create table tb1
(name1 char(4))

insert into tb1 values('tom')

begin tran
update tb1 set name1='aa'           --此时数据库会对表tb1加上排它锁,也就是x锁

现在在查询1中查询表2的内容

select * from tb2   --查询有会才出来,因为该表更新操作正在进行,事务没有结束,不允许读,错误消息如下:
消息 1205,级别 13,状态 56,第 1 行
事务(进程 ID 53)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。请重新运行该事务。

--在查询1中提交事务后,tb2上的x锁立即释放,即可查询tb2内容

select * from tb2

--结果为
 /* bb */


--查询2中的语句
use mydb
go

create table tb2
(name2 char(4) )

insert into tb2 values('sam')

begin tran
update tb2 set name2='bb'   ----此时数据库会对表tb2加上排它锁,也就是x锁


--同时又在查询2中读取tb1中的信息
select * from tb1                  -- 查询结果也会很久才出来,但最后成功了,因为两个事务都在更新表,系统会把消耗较小的一个事务锁定的资源释放出来,从而tb1上的x锁释放,即可查询出结果

查询结果:
/*  tom   */
--再在此处执行提交事务命令

commit 

------解决方案--------------------
http://www.cnblogs.com/sunshch/archive/2013/04/18/3027703.html#2832771 
推荐一个连接,看看能明白不。