一个表a有Id,OrderName 和 OrderValue,..列
我想写一个触发器更新这OrderValue列
当OrderName='AA' OrderValue=1
当OrderName='A' OrderValue=2
只有当更新OrderName时更新OrderValue的值。
我写了一个触发器
create TRIGGER tr_test ON a
FOR UPDATE ,insert
AS
BEGIN
DECLARE @OrderName nvarchar(10)
DECLARE @ID int
if update(OrderName)
begin
SELECT @OrderName=OrderName ,@ID= ID FROM a
IF @OrderName ='AA'
UPDATE a SET OrderValue=1 WHERE ID = @ID
ELSE IF @OrderName ='A'
UPDATE a SET OrderValue=2 WHERE ID = @ID
end
END 但我在批更新的时候,只是更新了最后一条。该怎么改这个触发器
我想写一个触发器更新这OrderValue列
当OrderName='AA' OrderValue=1
当OrderName='A' OrderValue=2
只有当更新OrderName时更新OrderValue的值。
我写了一个触发器
create TRIGGER tr_test ON a
FOR UPDATE ,insert
AS
BEGIN
DECLARE @OrderName nvarchar(10)
DECLARE @ID int
if update(OrderName)
begin
SELECT @OrderName=OrderName ,@ID= ID FROM a
IF @OrderName ='AA'
UPDATE a SET OrderValue=1 WHERE ID = @ID
ELSE IF @OrderName ='A'
UPDATE a SET OrderValue=2 WHERE ID = @ID
end
END 但我在批更新的时候,只是更新了最后一条。该怎么改这个触发器
解决方案 »
- 请问自定义函数可以操作数据库里的数据吗。
- 未能为视图或函数解析分配辅助表。超过了查询中表的最大数目(260)
- 请写一个SQL语句,每次执行这个语句后随机抽取这个表中每一组的一名教师。看表结构和记录样品:
- 听说可以禁止事件探查器,我们能不能自己做一个事件探查器?
- 如何用一条SQL表示一个数据库的表
- 一个过程中,我更新不同的几个表,能不能用一个COMMIT?
- 安装SQL 2008 Express sp1时出现registry properties are not valid under this context
- 紧急时期,请大家看一下我的作品,喜欢的帮忙投一票!
- SQL Server 2000经常发生写入超时,为什么?
- 什么原因导致“System.Data.SqlClient.SqlException: 将截断字符串或二进制数据”异常?谢谢!!
- sql server怎么设置自增加id?
- 实在想不出来了,求一sql语句
FOR UPDATE ,insert
AS
BEGIN
DECLARE @OrderName nvarchar(10)
DECLARE @ID int
if update(OrderName)
begin
UPDATE A SET
OrderValue = CASE WHEN I.OrderName = 'AA' then 1 ELSE 2 END
FROM A, inserted I
WHERE A.ID = i.id
and i.ordername IN('aa', 'a')
end
END
FOR UPDATE ,insert
AS
BEGIN
update a
set a.OrderValue = case when i.OrderName = 'AA' then 1 when i.OrderName = 'A' then 2 else a.OrderValue end
from a
join inserted i on i.id = a.id
END
FOR UPDATE ,insert
AS
BEGIN
if update(OrderName)
update a
set OrderValue=case OrderName when 'AA' then 1
when 'A' then 2
else a.OrderValue
end
from a,inserted i
where a.id=i.id
END
create TRIGGER tr_test ON a
FOR UPDATE ,insert
AS
BEGIN
if update(OrderName)
update a
set OrderValue=case i.OrderName when 'AA' then 1
when 'A' then 2
else a.OrderValue
end
from a,inserted i
where a.id=i.id
END
FOR UPDATE ,insert
AS
BEGIN
DECLARE @OrderName nvarchar(10)
DECLARE @ID int
if update(OrderName)
begin
UPDATE A SET
OrderValue = CASE WHEN I.OrderName = 'AA' then 1 ELSE 2 END
FROM A, inserted I
WHERE A.ID = i.id
and i.ordername IN('aa', 'a')
end
END