关于MYSQL5.0触发器入门
发布网友
发布时间:2022-04-19 16:50
我来回答
共2个回答
热心网友
时间:2022-04-07 18:21
mysql的的语法不熟,不过看你的问题发了很久没有人管,我来给你解释一下sql server的这个触发器的代码吧!
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
这些是 SQL-92 设置语句,使 SQL Server 2000/2005 遵从 SQL-92 规则。
当 SET QUOTED_IDENTIFIER 为 ON 时,标识符可以由双引号分隔,而文字必须由单引号分隔。当 SET QUOTED_IDENTIFIER 为 OFF 时,标识符不可加引号,且必须符合所有 Transact-SQL 标识符规则。
SQL-92 标准要求在对空值进行等于 (=) 或不等于 (<>) 比较时取值为 FALSE。当 SET ANSI_NULLS 为 ON 时,即使 column_name 中包含空值,使用 WHERE column_name = NULL 的 SELECT 语句仍返回零行。即使 column_name 中包含非空值,使用 WHERE column_name <> NULL 的 SELECT 语句仍会返回零行。
当 SET ANSI_NULLS 为 OFF 时,等于 (=) 和不等于 (<>) 比较运算符不遵从 SQL-92 标准。使用 WHERE column_name = NULL 的 SELECT 语句返回 column_name 中包含空值的行。使用 WHERE column_name <> NULL 的 SELECT 语句返回列中包含非空值的行。此外,使用 WHERE column_name <> XYZ_value 的 SELECT 语句返回所有不为 XYZ_value 也不为 NULL 的行。
ALTER TRIGGER [dbo].[sitedata_ins2] ON [dbo].[SiteData]
FOR INSERT
AS
trigger定义的头部,dbo:数据库名,sitedata_ins2:trigger名称,SiteData:trigger依附的表名称,FOR INSERT在表上进行什么操作的时候触发器被触发。
declare @recordtime as datetime:变量定义
select @recordtime=recordtime from inserted:从insert的数据中取值到定义的变量中
if not exists(select recordtime from sitedata2Center1 where recordtime=@recordtime)
insert into sitedata2Center1 (recordtime) values(@recordtime)
:判断语句,如果@recordtime在表sitedata2Center1中不存在,就插入进去。
至于mysql 5的你再想想办法自己写一下吧,你找个例子学习一下,应该可以搞定。
热心网友
时间:2022-04-07 19:39
mssql 的解释:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER TRIGGER [dbo].[sitedata_ins2]
ON [dbo].[SiteData] FOR INSERT -- 当[SiteData]表新增记录触发以下操作
AS
declare @recordtime as datetime
select @recordtime=recordtime from inserted -- ‘inserted’ 是指新增的记录信息(SiteData表),
if not exists(select recordtime from sitedata2Center1 where recordtime=@recordtime) --在sitedata2Center1表中查询是否存在相应的recordtime的记录
insert into sitedata2Center1 (recordtime) values(@recordtime) --如果没有相应记录就在sitedata2Center1表新增一条记录
--------------------------------------------
以下为你要的mysql的触发器的sql语句:
mysql> delimiter //
-> create trigger sitedata_ins2
-> before insert on SiteData
-> for each row
-> Begin
-> If not exists(select 1 from sitedata2Center1 where recordtime=new.recordtime) then
-> insert into sitedata2Center1(recordtime) values(new.recordtime);
-> END IF;
-> end;//
-> delimiter ;
Query OK, 0 rows affected (0.05 sec)
(祝你好运...)