|M| 没有学过SQL触发器,今天突然想到一个问题,不知道是不是用触发器的。
比如我有表
tb
id name
当我用
insert into tb ([name]) values ( '张三 ')
这样插入一条数据的时候
Sql自动判断name如果是‘张三’那就换成‘李四’
也就是结果为
id name
1 李四
谢谢
[解决办法]
up
[解决办法]
在数据库里加个触发器
[解决办法]
--建立境
Create Table tb
(idInt,
nameNvarchar(10))
GO
--建立器
Create Trigger TR_tb On tb
Instead of Insert
As
Begin
Insert tb
Select
id,
(Case name When N '张三 ' Then N '李四 ' Else name End) As name
From
Inserted
End
GO
--
insert into tb Select 1, N '张三 '
Union All Select 2, N '王五 '
Select * From tb
GO
--除境
Drop Table tb
--果
/*
idname
1李四
2王五
*/
[解决办法]
假设表名为ACREATE TRIGGER tgrname ON [dbo].[A] FOR INSERT ,UPDATEASdeclare @id intdeclare @name nvarchar(20)select @id= id,@name = name from insertedif @name= '张三 ' begin update A set name = '李四 ' where id = @idend
[解决办法]
可以在插入之前替换,也可以用触发器
[解决办法]
如楼上所言
[解决办法]
仁者见仁智者见智的问题,图方便就在程序里控制
这样的问题我是不太喜欢用触发器的,一般执行相关数据库操作的时候如果该表
和其他表有关联用到,其它方面的需求目前还比较少遇到,执行数据库操作的时候
触发一个事件而已,而这个事件是sql语句集
[解决办法]
[解决办法]
不用也可以,用也没错.看你喜欢那种方式了.
[解决办法]
如果对于初发起还不是太熟的话,建议在成立里面判断。
因为如果触发器使用不当的话,会对其他的操作带来影响,而且不容易找到错误的原因。
而且触发器也不太容易管理。
[解决办法]
这个问题不必用触发器啊,直接在程序里面判断就行了啊!
杀鸡用牛刀啦!
[解决办法]
可以在插入之前替换,也可以用触发器
同意……
[解决办法]
触发器就和普通sql语句一样 建议用触发器
[解决办法]
直接使用存储过程了啊
先判断再添加!
不建议使用触发器!
触发器有的时候会对别的操作有干扰