这个触发器 咋弄

Joson.e8love 2011-08-11 06:11:28
有TabA TbaB 两个表

做个 更新 TabA 某个字段 就插入一条数据到 TabB里边,(如果 有完全相同的一条记录 数据就不插入)

-----------------------------------------------------------------
这个怎么写

在 tabA 上写

ALTER TRIGGER [updatetabA]
ON tabA
for update,insert
AS

if update(StudID)
BEGIN


insert into [tabB] (incm) select i.StudID from inserted i

end

更新 tabA StudID字段 提示 已经更新 或删除不是唯一行



...全文
65 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Joson.e8love 2011-08-12
  • 打赏
  • 举报
回复
晕死 不知道为啥 重启了 系统就可以了

谢谢 大家 上边是对的 超级郁闷
Joson.e8love 2011-08-12
  • 打赏
  • 举报
回复


USE [Test]
GO
/****** Object: Table [dbo].[Test] Script Date: 08/12/2011 09:28:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Test](
[id] [int] IDENTITY(1,1) NOT NULL,
[name] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[subject] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[Source] [numeric](18, 0) NULL,
CONSTRAINT [PK_Test] PRIMARY KEY CLUSTERED
(
[id] ASC
) ON [PRIMARY]
) ON [PRIMARY]



USE [Test]
GO
/****** Object: Table [dbo].[TestA] Script Date: 08/12/2011 09:28:39 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[TestA](
[id] [int] IDENTITY(1,1) NOT NULL,
[name] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[subject] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[Source] [numeric](18, 0) NULL,
CONSTRAINT [PK_TestA] PRIMARY KEY CLUSTERED
(
[id] ASC
) ON [PRIMARY]
) ON [PRIMARY]




set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER TRIGGER [TriggerName]
ON [dbo].[TestA]
AFTER INSERT,DELETE,UPDATE
AS
if update(Name)
BEGIN

insert into test (name) select name from inserted i
where not exists (select 1 from Test where name=i.name )

END




好像 还是提示 以前同样的错误

where not exists (
select 1 from [tabB]
where incm = i.StudID
)
group by i.StudID
不明白这个条件 是什么意思

select 1 from [tabB] where incm = i.StudID

--小F-- 2011-08-11
  • 打赏
  • 举报
回复
ALTER TRIGGER [updatetabA]
ON tabA
for update,insert
AS

if update(StudID)
BEGIN
insert into
[tabB] (incm)
select
i.StudID from inserted i
where
not exists (select 1 from [tabB] where incm = i.StudID)
group by
i.StudID
end
NBDBA 2011-08-11
  • 打赏
  • 举报
回复
ALTER TRIGGER [updatetabA]
ON tabA
for update,insert
AS

if update(StudID)
BEGIN
insert into [tabB] (incm) select i.StudID from inserted i
where not exists (
select 1 from [tabB]
where incm = i.StudID
)
group by i.StudID
end
快溜 2011-08-11
  • 打赏
  • 举报
回复
ALTER TRIGGER [updatetabA]
ON tabA
for update,insert
AS

if update(StudID)
BEGIN
insert into [tabB] (incm)
select i.StudID from inserted i
where not exists(select 1 from tabB where incm=i.StudID)
end

22,209

社区成员

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

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