如何在触发器中获取SQL语句和执行前的值

比如我在网页中,更新用户资料时如果不填写密码,就代表不更改密码。
但我又不想通过判断写两条UPDATE语句,直接全部提交到SQL数据库,由触发器来判断password='',如果是空的就不更新密码。例如

ALTER TRIGGER [passwordNULL] ON [dbo].[userTable]
FOR UPDATE
AS
IF(password='')
UPDATE userTable SET password=password
WHERE password=''

请问有什么方法吗?

UPDATE 其实就是执行一次 DELETE 操作和一次 INSERT 操作。

在 UPDATE 触发器,触发后旧数据放在 deleted 临时表,新数据放在 inserted 表,楼主只要查这两个表就可以解决问题了。

例子:
DECLARE @password VARCHAR(200)

SELECT @password = [Password] FROM deleted -- 查旧数据

IF(... 略
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-04-28
如果密码是空就不更新密码这列呀,这样可以吗?
相似回答