数据库触发器怎么写
1.SQL数据库中的触发器怎么写啊
CREATE TRIGGER trig_stu_update ON student
FOR UPDATE
AS
begin
end;
CREATE TRIGGER trig_stu_delete ON student
FOR DELETE
AS
begin
end;
------------------
上面是更新、删除的触发器模板,将你的代码填在begin。end之间。
触发器中经常用到的inserted,deleted。
inserted里面存放了insert、update操作的插入值或更新后值。
deleted里存放的是update、delete操作的更新前值或删除值。
使用方法:
declare @no int,@sex bit,@age int;
--insert、update取新值
select @no=no,@sex=sex,@age=age from inserted;
--delete、update删除值
select @no=no,@sex=sex,@age=age from deleted;
2.请问这个数据库触发器怎么写
--楼主这样离谱的数据能成功是因为你的数据类型的问题 你整的是字符串吧? 要么就是大日期型
--支持9999年 你那个日期格式也没有问题 肯定可以插入啊 你可以把数据类型改为smalldatetime 你
--这个数据就插入不进去 我帮你改下触发器吧 你这样其实只是对插入有效 如果是更新呢
--你这个触发器就管不了了
create trigger tr_age1
on student
for insert
as
if exists(select 1 from inserted where DATEDIFF(YEAR,birth,getdate()) between 15 and 45)
begin
rollback
print'年龄只能在15-45区间'
end
else
print'修改成功'
3.SQL触发器怎么写
--此题唯一的难度是用户名 假设用户名已保存在表CurrentUser中
--给出插入操作的触发器创建 其他类似
CREATE TRRIGER MYTR1
ON A
FOR INSERT
AS
DECLARE @UserName varchar(20)
SELECt @UserName=UserName from CurrentUser
INSERT INTO C (TableName,Type,dDate,UserName) VALUES ('A','Insert',getdate(),@UserName)
GO
4.数据库中的触发器怎么写
建议不要使用系统的关键字把ID该为其他的字段名create trigger yxon 评论表after insertasdeclare @N bigintdeclare @NO varchar(50)------select @NO=商品ID from insertedselect @N=评论人数 from 商品表 where 商品ID=@NOUPDATe 商品表 set 评论人数=@N+1 where 商品ID=@NO我不知道你的表怎么做的所以具体的还是要你自己来改.有什么不懂,在提出来.这个是评论次数,不能算是评论人数,一个人可以评论多次而且算数,如果要统计人数还要在 用户名 上做文章。
5.数据库中的触发器怎么写
建议不要使用系统的关键字把ID该为其他的字段名
create trigger yx
on 评论表
after insert
as
declare @N bigint
declare @NO varchar(50)------
select @NO=商品ID from inserted
select @N=评论人数 from 商品表 where 商品ID=@NO
UPDATe 商品表 set 评论人数=@N+1 where 商品ID=@NO
我不知道你的表怎么做的所以具体的还是要你自己来改.
有什么不懂,在提出来.
这个是评论次数,不能算是评论人数,一个人可以评论多次而且算数,
如果要统计人数还要在 用户名 上做文章
6.SQL 这个触发器怎么写
USE [TestDatabaseChar]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER trigger [dbo].[AutoUpdate]
on [dbo].[AttRules]
for update
as
BEGIN
--直接获取当前更新的那一个PID(主键)
declare @id int
select @id = pid from deleted
--除了主键以外全部更新
update AttRules set AttRulesIsSelect=0
update AttRules set AttRulesIsSelect=1 where pid=@id
end
7.SQL语句:写一个触发器
SQL Server用作业调度
作业的操作
企业管理器
--管理
--SQL Server代理
--右键作业
--新建作业
--"常规"项中输入作业名称
--"步骤"项
--新建
--"步骤名"中输入步骤名
--"类型"中选择"Transact-SQL 脚本(TSQL)"--插入的SQL脚本
--"数据库"选择执行命令的数据库
--"命令"中输入要执行的语句:
EXEC 存储过程名 。 --该存储过程用于创建表
--确定
--"调度"项
--新建调度
--"名称"中输入调度名称
--"调度类型"中选择你的作业执行安排
--如果选择"反复出现"
--点"更改"来设置你的时间安排 每月25日
8.MySQL中触发器怎么写啊
我有books 和 info 表。
books表中有 ISBN Allbooks BorrowsBooks info 表有 ISBN Userno Yesorno 当我的 Yesorno 是 YES 时就从BorrowBooks中减去1; 这个触发器我已经写好了。 可有个问题。
就是当我Yesorno为Yes时。
books表中的每列Borrowbooks都减去1。
我的触发器代码如下。
CREATE TRIGGER `chu` BEFORE INSERT ON `info` FOR EACH ROW BEGIN IF new。 Yesorno='Yes' then UPDATE books SET Borrowbooks=Borrowbooks-1 ; else UPDATE books SET Borrowbooks=Borrowbooks 1 ; end if; END;; 就是update后面的where语句怎么写???让他减去的是你info表中写的ISBN号对应books表ISBN号后面的BorrowBooks数?。
9.SQL 自动编号触发器怎么写
--参照,把规则写在触发器
if object_id ( 'T' ) is not null
drop table T
go
create table T(id char ( 14 ) primary key ,name varchar ( 10 ))
go
-- 用触发器完成
create trigger tr_T_insert on T
instead of insert
as
begin
declare @i int
select * into # from inserted
select @i = isnull ( max (RIGHt(id,4)), 10000 ) from T WHERe LEFt(ID,10)='JC_WYC'+RTRIm(YEAR(GETDATE()))
update # set id = right ( 10000 + rtrim ( @i ), 4), @i = @i + 1
insert T select 'JC_WYC'+RTRIm(YEAR(GETDATE()))+RTRIm(ID),name from #
end
go
-- 测试
insert T (Name)
select ' a ' union all -- 这里1为任何值都不影响id插入的值
select ' b '
select * from T
go