检查此编码Status Colum not active自动更新以插入时间 [英] Check this coding Status Colum not active automatically update for inserting time

查看:37
本文介绍了检查此编码Status Colum not active自动更新以插入时间的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述





Table

USE [demo]
GO

/****** Object:  Table [dbo].[cus]    Script Date: 10/19/2013 18:55:12 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[cus](
    [customername] [varchar](max) NULL,
    [address] [varchar](max) NULL,
    [Startdate] [date] NULL,
    [enddate] [date] NULL,
    [status] [varchar](8) NULL
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO





//////////////////////////////////////////

SP



USE [demo]

GO

/ ******对象:触发器[dbo]。[trigoninsert] S. cript Date:10/19/2013 17:08:30 ****** /

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

ALTER触发器[dbo]。[trigoninsert] [dbo]。[cus]

for

insert

as

声明@customername varchar(max);

声明@address varchar(max);

声明@Startdate日期;

声明@enddate日期;

声明@status varchar(6);

select @ customername = customername from插入;

从插入中选择@ address =地址;

选择@ Startdate =从插入开始;

从插入中选择@ enddate = enddate;

if(@ enddate< getdate())>

begin

set @ status ='InActive';

回滚;

打印'值不能插入,因为结束日期小于当前日期';

结束

开始



update cus

set status = @ status where customername = @ customername;
结束





但状态栏未更新根据enddate



//////////////////////////////////////////
SP

USE [demo]
GO
/****** Object: Trigger [dbo].[trigoninsert] Script Date: 10/19/2013 17:08:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER trigger [dbo].[trigoninsert] on [dbo].[cus]
for
insert
as
declare @customername varchar(max);
declare @address varchar(max);
declare @Startdate date;
declare @enddate date;
declare @status varchar(6);
select @customername=customername from inserted;
select @address=address from inserted;
select @Startdate=Startdate from inserted;
select @enddate=enddate from inserted;
if(@enddate<getdate())>
begin
set @status='InActive';
rollback;
print 'the Value Cannot be inserted as the enddate is less than the current date';
end
begin

update cus
set status=@status where customername=@customername;
end


But Status Column Not Update for According to enddate

推荐答案

嗨克里希纳,

你已经在你的触发器中回滚插入!那么你要更新哪个数据记录?

你在更新前删除了记录!

而不是更新语句再次在你的触发器中使用insert语句,但是设置嵌套触发器服务器选项为0以防止嵌套触发器,

查看mor信息的链接:

http://technet.microsoft.com/en-us/library/ms190739%28v=sql.105%29.aspx [ ^ ]

http:// msdn。 microsoft.com/en-us/library/ms181299%28v=sql.100%29.aspx [ ^ ]
Hi Krishna,
you've rolled back insertion in your trigger! then which record of data do you want to update?
you've removed the record before update!
Instead of update statement use insert statement in your trigger again,but set the nested triggers server option to 0 to prevent nested trigger,
look at links for mor information:
http://technet.microsoft.com/en-us/library/ms190739%28v=sql.105%29.aspx[^]
http://msdn.microsoft.com/en-us/library/ms181299%28v=sql.100%29.aspx[^]


这篇关于检查此编码Status Colum not active自动更新以插入时间的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆