--表名: [dbo].[tee]
id int Unchecked
FName nvarchar(50) Unchecked
FSalary decimal(18, 0) Unchecked
--表名: [dbo].[TRecordTee]
id int Unchecked
RecordString nvarchar(100) Unchecked
触发器recordTee 的创建-- 创建一个触发器
create trigger recordTee
on dbo.tee
after update ,insert
as
begin
declare @Name nvarchar(50) ;
declare @Salary decimal(18,0)
select @Name=i.Fname,@Salary=i.FSalary from [inserted] as i; -- [inserted]是不能变的,表示主表。
--insert
insert into dbo.TRecordTee (RecordString) values('Time:'+convert(nvarchar(20),getDate(),101)+'Name:'+convert(nvarchar(10),@Name)+' salary:'+convert(nvarchar(10),@Salary));
--select * from dbo.TRecordTee;
end--试试:
insert into dbo.tee(FName,Fsalary)values('mmm',5000);
go
select *from dbo.tee;请问: --现在 国家规定:
--要求工资一定要 大于 1500元/月;
如何 修改 触发器[recordTee] 使得插入,or 修改的表[dbo.tee]的工资 Fsalary<=1500时, 就不允许输入?
id int Unchecked
FName nvarchar(50) Unchecked
FSalary decimal(18, 0) Unchecked
--表名: [dbo].[TRecordTee]
id int Unchecked
RecordString nvarchar(100) Unchecked
触发器recordTee 的创建-- 创建一个触发器
create trigger recordTee
on dbo.tee
after update ,insert
as
begin
declare @Name nvarchar(50) ;
declare @Salary decimal(18,0)
select @Name=i.Fname,@Salary=i.FSalary from [inserted] as i; -- [inserted]是不能变的,表示主表。
--insert
insert into dbo.TRecordTee (RecordString) values('Time:'+convert(nvarchar(20),getDate(),101)+'Name:'+convert(nvarchar(10),@Name)+' salary:'+convert(nvarchar(10),@Salary));
--select * from dbo.TRecordTee;
end--试试:
insert into dbo.tee(FName,Fsalary)values('mmm',5000);
go
select *from dbo.tee;请问: --现在 国家规定:
--要求工资一定要 大于 1500元/月;
如何 修改 触发器[recordTee] 使得插入,or 修改的表[dbo.tee]的工资 Fsalary<=1500时, 就不允许输入?
解决方案 »
- SQL2000触发器
- 存储过程的错误
- 想在程序中加入一个像SQL SERVER中数据导入导出那样动态显示的齿轮动画,谁能帮忙提供这个动画呀!多谢!
- 存储过程返回记录总为空,如果修改:
- 江湖救急 伤脑筋的mssql查询问题 在线等
- DBA_Huangzj、阳泉酒家小当家,关于2表模糊搜索匹配的问题已解决
- 这东东执行了20分钟了,大家帮忙看看死没死
- 时间段的划分
- 我用点对点拨号方式访问一个装有SQL Server 的计算机,现在我在我的机上能否访问对方的MSSQL数据吗?
- sqlserver中若干字段的区别
- 为什么我的visual studio商业智能模板里面没有Analysis Services项目模板
- 各位大大们,进来看看,sql访问问题
-- 创建一个触发器
create trigger recordTee
on dbo.tee
after update ,insert
as
begin
declare @Name nvarchar(50) ;
declare @Salary decimal(18,0)
select @Name=i.Fname,@Salary=i.FSalary from [inserted] as i; -- [inserted]是不能变的,表示主表。
--insert
if @Salary>1500
begin
insert into dbo.TRecordTee (RecordString) values('Time:'+convert(nvarchar(20),getDate(),101)+'Name:'+convert(nvarchar(10),@Name)+' salary:'+convert(nvarchar(10),@Salary));
--select * from dbo.TRecordTee;
end
end
--表名: [dbo].[tee] 是用来记录工资的,
--表名: [dbo].[TRecordTee] 是用来记录操作员的操作的。意思是:
当插入or 修改 来表 [dbo].[tee] 的数据时,如果 FSalary<=1500 就终止本次插入。
不过 [dbo].[TRecordTee] 是用来记录操作员的操作的
所以还是要向 表 [dbo].[TRecordTee] 写入数据。
-- 创建一个触发器
create trigger recordTee
on dbo.tee
INSTEAD OF update ,insert
as
begin
declare @Name nvarchar(50) ;
declare @Salary decimal(18,0)
select @Name=i.Fname,@Salary=i.FSalary from [inserted] as i; -- [inserted]是不能变的,表示主表。
--insert
if @Salary>1500
begin
insert into dbo.tee(FName,Fsalary)values('mmm',5000);
insert into dbo.TRecordTee (RecordString) values('Time:'+convert(nvarchar(20),getDate(),101)+'Name:'+convert(nvarchar(10),@Name)+' salary:'+convert(nvarchar(10),@Salary));
--select * from dbo.TRecordTee;
end
end
create trigger recordTee
on dbo.tee
for update ,insert
as
begin
declare @Name nvarchar(50) ;
declare @Salary decimal(18,0)
select @Name=i.Fname,@Salary=i.FSalary from [inserted] as i; -- [inserted]是不能变的,表示主表。
if @salary>=1500
begin
insert into dbo.TRecordTee (RecordString)
values('Time:'+convert(nvarchar(20),getDate(),101)+'Name:'+convert(nvarchar(10),@Name)+' salary:'+convert(nvarchar(10),@Salary));
end
else
begin
print '工资不能少于1500元'
end
--select * from dbo.TRecordTee;
end
create table [dbo].[tee](
id int,
FName nvarchar(50),
FSalary decimal(18, 0))
ALTER TABLE [dbo].[tee]
ADD CONSTRAINT chk_tee CHECK (FSalary>1500)
insert into [tee] select 1,'aaaa',1000------------------
消息 547,级别 16,状态 0,第 1 行
INSERT 语句与 CHECK 约束"chk_tee"冲突。该冲突发生于数据库"Test",表"dbo.tee", column 'FSalary'。
语句已终止。