关于sql server 2005 触发器 问题。

hyit2004 2007-08-06 11:27:00

CREATE TABLE MYTABLE_LOG(ID INT, NAME VARCHAR(100))
GO
CREATE TABLE [dbo].[MYTABLE](
[UID] [numeric](18, 0) IDENTITY(1,1) NOT NULL,
[ID] [int] NULL,
[NAME] [varchar](100) NULL,
CONSTRAINT [PK_MYTABLE] PRIMARY KEY CLUSTERED
(
[UID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

GO

create TRIGGER [MYTABLE_2sernet] on [MYTABLE]
AFTER INSERT,UPDATE,DELETE
AS
begin
insert into MYTABLE_LOG(ID,[NAME])
select coalesce(ins.ID,del.ID),coalesce(ins.[NAME],del.[NAME])
from inserted ins full join deleted del on ins.UID=del.UID
where coalesce(ins.ID,del.ID)
not in (select distinct ID from MYTABLE_LOG (nolock))
end
go

INSERT INTO MYTABLE
SELECT 1,'A'
union all SELECT 2,'B'
union all SELECT 3,'C'
union all SELECT 4,'D'
union all SELECT 5,'E'
union all SELECT 6,'F'
union all SELECT 1,'A'
union all SELECT 2,'B'
union all SELECT 3,'C'
union all SELECT 4,'D'
union all SELECT 5,'E'
union all SELECT 6,'F'
go
select * from MYTABLE
select * from MYTABLE_LOG order by ID
问题描述:
我本来想MYTABLE_LOG只有6条记录。(重复的数据不存在)
正确结果如下:
ID NAME
1 A
2 B
3 C
4 D
5 E
6 F
而不是
ID NAME
1 A
1 A
2 B
2 B
3 C
3 C
4 D
4 D
5 E
5 E
6 F
6 F

我的sp_configure设置:
name        minimum maximum config_value run_value
allow updates      0 1 0 0
clr enabled      0 1 0 0
cross db ownership chaining 0 1 0 0
default language      0 9999 28 28
max text repl size (B) 0 2147483647 65536 65536
nested triggers      0 1 1 1
remote access      0 1 1 1
remote admin connections 0 1 0 0
remote login timeout (s) 0 2147483647 20 20
remote proc trans      0 1 0 0
remote query timeout (s) 0 2147483647 600 600
server trigger recursion 0 1 1 1
show advanced options 0 1 0 0
user options      0 32767 0 0
麻烦大家帮我看看哪里错误。。
...全文
128 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
diablo8848 2007-08-06
  • 打赏
  • 举报
回复
0分帖没人帮你,哈哈
hyit2004 2007-08-06
  • 打赏
  • 举报
回复
请大家给予帮助,谢了。

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧