mysql 5.0数据库使用

mysql 5.0数据库使用,第1张

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=newrecordtime) then

-> insert into sitedata2Center1(recordtime) values(newrecordtime);

-> END IF;

-> end;//

-> delimiter ;

Query OK, 0 rows affected (005 sec)

(祝你好运)

本文主要主要讲解了SQL Server数据库函数的两种用法 具体内容请参考下文

◆ 由于update里不能用存储过程 并且由于根据更新表的某些字段还要进行计算 所以很多人采用的是游标的方法 在这里我们可以用函数的方法实现

函数部分

CREATE FUNCTION [DBO] [FUN_GETTIME] (@TASKPHASEID INT)RETURNS FLOAT ASBEGINDECLARE @TASKID INT @HOUR FLOAT @PERCENT FLOAT @RETURN FLOATIF @TASKPHASEID IS NULLBEGINRETURN( )ENDSELECT @TASKID=TASKID @PERCENT=ISNULL(WORKPERCENT )/ FROM TABLETASKPHASEWHERE ID=@TASKPHASEIDSELECT @HOUR=ISNULL(TASKTIME ) FROM TABLETASKWHERE ID=@TASKIDSET @RETURN=@HOUR@PERCENTRETURN (@RETURN)END调用函数的存储过程部分 CREATE PROCEDURE [DBO] [PROC_CALCCA]@ROID INTASBEGINDECLARE @CA FLOATUPDATE TABLEFMECASETCvalue_M= ISNULL(MODERATE )ISNULL(FMERATE )ISNULL(B BASFAILURERATE )[DBO] [FUN_GETTIME](C ID)FROM TABLEFMECA TABLERELATION B TABLETASKPHASE CWHERE ROID=@ROID AND TASKPHASEID=C ID AND B ID=@ROIDSELECT @CA=SUM(ISNULL(Cvalue_M )) FROM TABLEFMECA WHERE ROID=@ROIDUPDATE TABLERELATIONSET CRITICALITY=@CAWHERE ID=@ROIDENDGO

◆ 我们要根据某表的某些记录 先计算后求和 因为无法存储中间值 平时我们也用游标的方法进行计算 但SQL Server 里支持

SUM ( [ ALL DISTINCT ] eXPression )expression

是常量 列或函数 或者是算术 按位与字符串等运算符的任意组合 因此我们可以利用这一功能

函数部分

lishixinzhi/Article/program/SQLServer/201311/22423

跨数据库使用比较简单,如ceshi数据库想使用Finance2014的A表,则使用SELECT FROM Finance2014dboA

跨服务器的使用,相对复杂一些 需要先连接服务器

EXEC sp_addlinkedserver 'srv_lnk','','SQLOLEDB','1921682249'EXEC sp_addlinkedsrvlogin 'srv_lnk','false',null,'sa','12345'

再设置保证存储过程能够使用

EXEC sp_serveroption @server='srv_lnk',@optname='rpc',@optvalue='TRUE'EXEC sp_serveroption @server='srv_lnk',@optname='rpc out',@optvalue='TRUE'

再跨服务器调用数据库表和存储过程如:

SELECT FROM srv_lnkAdboB 其中A为数据库B为表

EXEC srv_lnkAdboB 其中A为数据库B为存储过程

dbo 和Person都是架构名,默认的架构都是以dbo 开头的 一般我们在调用数据库

数据库名构架名表名,这种方式在不同的数据库。

当在同一个数据库中时就可以省略数据库名,只需要构架名表名,这是在表中只有相同的架构的情况下,只需要直接用表名就可以了select from 表 ,如果存在架构有多种的话就需要在调用中用 构架名表名 select from 架构名表。

他们起到识别功能,比方说表名相同都叫 a,但是一个是dbo 架构的,一个是 Person,在调用过程中是不一样的,select from dbo表

select from person表 不写架构名则默认为dbo。

写的好辛苦,不知道你懂了吗?

以上就是关于mysql 5.0数据库使用全部的内容,包括:mysql 5.0数据库使用、讲解SQL Server数据库中函数的使用方法、跨服务器数据库之间的 *** 作怎么进行等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10094628.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存