触发器问题? 需求是这样的,数据库里有个int类型的字段存放用户的积分现在公司需求是如果满三年后该积分还没用过,就自动清空,我想用触发器来做,该怎么搞? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用定时作业调用存储过程来做。定时作业的制定企业管理器 --管理 --SQL Server代理 --右键作业 --新建作业 --"常规"项中输入作业名称 --"步骤"项 --新建 --"步骤名"中输入步骤名 --"类型"中选择"Transact-SQL 脚本(TSQL)" --"数据库"选择执行命令的数据库 --"命令"中输入要执行的语句: EXEC 存储过程名 ... --该存储过程用于创建表 --确定 --"调度"项 --新建调度 --"名称"中输入调度名称 --"调度类型"中选择你的作业执行安排 --如果选择"反复出现" --点"更改"来设置你的时间安排 然后将SQL Agent服务启动,并设置为自动启动,否则你的作业不会被执行 设置方法: 我的电脑--控制面板--管理工具--服务--右键 SQLSERVERAGENT--属性--启动类型--选择"自动启动"--确定. 存储过程大致如下;create proc my_procas update tb set 积分字段 = 0 where datediff(yy,时间字段,getdate()) > 3 or (right(convert(varchar(10),时间字段,120),5) < right(convert(varchar(10),getdate(),120),5))go 数据库里有个int类型的字段存放用户的积分 现在公司需求是如果满三年后该积分还没用过,就自动清空,我想用触发器来做,该怎么搞?时间字段呢,?可以用作业做乌龟大侠说完了,触发器也类似的 建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。 参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html 1. 你的 create table xxx .. 语句 2. 你的 insert into xxx ... 语句 3. 结果是什么样,(并给以简单的算法描述) 4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL) 这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。 CREATE TABLE [dbo].[c_guest]( --游客表 [id] [int] IDENTITY(1,1) NOT NULL, [guest_name] [nvarchar](100) COLLATE Chinese_PRC_CI_AS NULL, [guest_tel] [nvarchar](200) COLLATE Chinese_PRC_CI_AS NULL, [guest_mobile] [nvarchar](100) COLLATE Chinese_PRC_CI_AS NULL, [guest_idcard] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL, [guest_birthday] [smalldatetime] NULL, [guest_sex] [nvarchar](4) COLLATE Chinese_PRC_CI_AS NULL, [guest_level] [int] NULL, [guest_sb] [tinyint] NULL CONSTRAINT [DF_c_guest_guest_sb] DEFAULT (0), [s] [bit] NULL CONSTRAINT [DF_c_guest_s] DEFAULT (1), [add_time] [smalldatetime] NULL CONSTRAINT [DF_c_guest_add_time] DEFAULT (getdate()),DEFAULT (0), [contact_id] [int] NULL, [integral] [int] NULL CONSTRAINT [DF_c_guest_integral] DEFAULT (0), [sale_sb] [int] NULL CONSTRAINT [DF_c_guest_sale_sb] DEFAULT (0), [guest_home_adr] [varchar](200) COLLATE Chinese_PRC_CI_AS NULL, [card_id] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL)数据库是用的sql2005表结构是上面的,积分字段是integral,现在的想法是如果用户在三年内没有任何消费记录,就自动清空他的积分,各位能不能给点我开发思路? 三年,好长时间哦!在用户注册的时候建立触发器,该触发器包含 3*365 次 waitfor delay '24:0:0' 操作! 楼上的各位能说的详细些吗?我接触asp.net没多长时间,作业是什么? 我的sql2005上没有作业?按照楼上的步骤操作,我连的是别人的机器没有作业吗? 怎样修改results的界面 这样建约束怎么会有错,怎么改 ACCESS数据库查询语句长度问题 请大虾们看我的存储过程有问题吗 关于解决并发冲突的问题 发了两次贴都没解决,这是第三次了。 大家帮助我分析下下面的SQL语句,我对子查询不是很熟悉谢谢了 我把excel表导入到SQL2000中,最后出现如下提示,请问是怎么回事? 查询整个数据库所有表所有字段含有关键字"XXX" 的SQL语句 关于sql的两个临时表inserted,deleted的问题 美军开始轰炸巴格达,目前是北京时间10:47 如何索引问题 求一sql?
--管理
--SQL Server代理
--右键作业
--新建作业
--"常规"项中输入作业名称
--"步骤"项
--新建
--"步骤名"中输入步骤名
--"类型"中选择"Transact-SQL 脚本(TSQL)"
--"数据库"选择执行命令的数据库
--"命令"中输入要执行的语句:
EXEC 存储过程名 ... --该存储过程用于创建表 --确定
--"调度"项
--新建调度
--"名称"中输入调度名称
--"调度类型"中选择你的作业执行安排
--如果选择"反复出现"
--点"更改"来设置你的时间安排
然后将SQL Agent服务启动,并设置为自动启动,否则你的作业不会被执行 设置方法:
我的电脑--控制面板--管理工具--服务--右键 SQLSERVERAGENT--属性--启动类型--选择"自动启动"--确定.
存储过程大致如下;create proc my_proc
as
update tb set 积分字段 = 0 where datediff(yy,时间字段,getdate()) > 3 or (right(convert(varchar(10),时间字段,120),5) < right(convert(varchar(10),getdate(),120),5))
go
现在公司需求是如果满三年后该积分还没用过,就自动清空,我想用触发器来做,该怎么搞?时间字段呢,?可以用作业做乌龟大侠说完了,触发器也类似的
参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
[id] [int] IDENTITY(1,1) NOT NULL,
[guest_name] [nvarchar](100) COLLATE Chinese_PRC_CI_AS NULL,
[guest_tel] [nvarchar](200) COLLATE Chinese_PRC_CI_AS NULL,
[guest_mobile] [nvarchar](100) COLLATE Chinese_PRC_CI_AS NULL,
[guest_idcard] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[guest_birthday] [smalldatetime] NULL,
[guest_sex] [nvarchar](4) COLLATE Chinese_PRC_CI_AS NULL,
[guest_level] [int] NULL,
[guest_sb] [tinyint] NULL CONSTRAINT [DF_c_guest_guest_sb] DEFAULT (0),
[s] [bit] NULL CONSTRAINT [DF_c_guest_s] DEFAULT (1),
[add_time] [smalldatetime] NULL CONSTRAINT [DF_c_guest_add_time] DEFAULT (getdate()),DEFAULT (0),
[contact_id] [int] NULL,
[integral] [int] NULL CONSTRAINT [DF_c_guest_integral] DEFAULT (0),
[sale_sb] [int] NULL CONSTRAINT [DF_c_guest_sale_sb] DEFAULT (0),
[guest_home_adr] [varchar](200) COLLATE Chinese_PRC_CI_AS NULL,
[card_id] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL)
数据库是用的sql2005表结构是上面的,积分字段是integral,现在的想法是如果用户在三年内没有任何消费记录,就自动清空他的积分,各位能不能给点我开发思路?
在用户注册的时候建立触发器,该触发器包含 3*365 次 waitfor delay '24:0:0' 操作!