创建一个简单的触发器
触发器是一种特殊的存储过程,类似于事件函数,SQL Server? 允许为 INSERT、UPDATE、DELETE 创建触发器,即当在表中插入、更新、删除记录时,触发一个或一系列 T-SQL语句。
触发器可以在查询分析器里创建,也可以在表名上点右键->“所有任务”->“管理触发器”来创建,不过都是要写 T-SQL 语句的,只是在查询分析器里要先确定当前操作的数据库。
创建触发器用 CREATE TRIGGER
CREATE TRIGGER 触发器名称
ON 表名
FOR INSERT、UPDATE 或 DELETE
AS
T-SQL 语句
注意:触发器名称是不加引号的。
如下是联机丛书上的一个示例,当在 titles 表上更改记录时,发送邮件通知 MaryM。
CREATE TRIGGER reminder
ON titles
FOR INSERT, UPDATE, DELETE
AS
EXEC master..xp_sendmail 'MaryM',
'Don''t forget to print a report for the distributors.'
重命名触发器
用查询分析器重命名:
exec sp_rename 原名称, 新名称
sp_rename 是 SQL Server? 自带的一个存储过程,用于更改当前数据库中用户创建的对象的名称,如表名、列表、索引名等。
用企业管理器重命名:
在表上点右键->“所有任务”->&l ......
SQL触发器实例1
定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序。触发器是一个特殊的存储过程。
常见的触发器有三种:分别应用于Insert , Update , Delete 事件。
我为什么要使用触发器?比如,这么两个表:
Create Table Student( --学生表
StudentID int primary key, --学号
....
)
Create Table BorrowRecord( --学生借书记录表
BorrowRecord int identity(1,1), --流水号
......
今天要同步远程数据库时出错,报错“实际的服务器名称。。。。”,以下是解决方法
SQL code--查看当前服务名称
select @@servername
--如果与当前计算机名不一致,则用以下语句修改SQL Server服务器名
sp_dropserver 'old_name' --先删除原名称
GO
sp_addserver 'new_name', local --然后添加新的和计算机名相同的名称
GO
重启,OK ......
1、与group by搭配使用的函数
在数据库中,我们可以使用GROUP BY函数把数据组合在一起,从而获得总计信息。可以把此功能看成是一种当数据从数据库中返回时把相同类型的信息集中到一起的能力。下面给出了完整列表。
avg([distinct]column_name)
求所有雇员薪水的平均值。
select AVG(emp_salary)
from employee;
求取column_name中的所有值的平均值。如果使用DISTINCT选项,则只使用不同的非空的数值。
count([distinct]value)
统计雇员的数目。
select COUNT(emp_name)
from employee;
统计选择行的数目,并忽略VALUE中的空值。如果使用了DISTINCT选项
则只统计不同的非空数值。VALUE可以是列名,也可以是表达式。
max(value)
返回薪水的最大值
select MIN
emp_salary)
from employee;
从选定 ......
ID int identity(1,1) primary key 自动增长,主键
EXEC sp_rename 'login_info','PDI_login_info' 执行存储过程 sp_rename , 将login_info表名 更改为 PDI_login_info
SET XACT_ABORT {ON|OFF} 如果事务中发生错误,on 则会终止整个事务的执行,如果OFF,继续错误的下面一句
SET ANSI_NULLS {ON|OFF} 用于和NULL的比较,如:null=null在off时会返回 true,在on 时为false
set QUOTED_IDENTIFIER ON 为 ON 时,标识符可以由双引号或者[]分隔,而文字必须由单引号分隔,为 OFF 时,标识符不可加引号,且必须符合所有 Transact-SQL 标识符规则
SET NOCOUNT {ON| OFF} 当SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数)。当 SET NOCOUNT 为 OFF 时,返回计数 ......
下列语句部分是Mssql
语句,不可以在access
中使用。
SQL
分类:
DDL—
数据定义语言(CREATE
,ALTER
,DROP
,DECLARE)
DML—
数据操纵语言(SELECT
,DELETE
,UPDATE
,INSERT)
DCL—
数据控制语言(GRANT
,REVOKE
,COMMIT
,ROLLBACK)
首先,
简要介绍基础语句:
1
、说明:创建数据库
CREATE DATABASE database-name
2
、说明:删除数据库
drop database dbname
3
、说明:备份sql server
---
创建 备份数据的 device
USE master
EXEC sp_addumpdevice 'disk',
'testBack', 'c:\mssql7backup\MyNwind_1.dat'
---
开始 备份
BACKUP DATABASE pubs TO testBack
4
、说明:创建新表
create table tabname(col1 type1 [not null] [primary key],col2
type2 [not null],..)
根据已有的表创建新表:
A
:create table tab_new like tab_old (
使用旧表创建新表)
B
:create table tab_new as select col1,col2… from tab_old
definition only
5
、说明:删除新表drop table tabname
6
、说明:增加一个列
Alter table tabname a ......