网站分类
文章归档
- 2008 May (9)
- 2008 April (2)
- 2008 February (2)
- 2008 January (2)
- 2007 December (5)
- 2007 November (3)
- 2007 October (2)
- 2007 August (1)
- 2007 July (1)
- 2007 May (2)
- 2007 April (18)
- 2007 March (6)
- 2007 February (2)
- 2007 January (7)
- 2006 December (13)
- 2006 November (14)
- 2006 October (1)
- 2006 September (6)
- 2006 August (15)
- 2006 July (2)
- 2006 June (2)
- 2006 May (3)
- 2006 April (9)
- 2006 March (10)
- 2006 February (16)
- 2006 January (17)
- 2005 December (14)
- 2005 November (35)
- 2005 October (37)
- 2005 September (54)
- 2005 August (22)
- 2005 July (23)
- 2005 April (4)
- 2005 January (2)
SQL Server 2000 (SP4)笔记整理(三):触发器
/*
建立虚拟测试环境,包含:表[卷烟库存表],表[卷烟销售表]。
请大家注意跟踪这两个表的数据,体会触发器到底执行了什么业务逻辑,对数据有什么影响。
为了能更清晰的表述触发器的作用,表结构存在数据冗余,且不符合第三范式,这里特此说明。
*/
USE Master
GO
IF EXISTS (SELECT NAME FROM SYSOBJECTS WHERE XTYPE = 'U' AND NAME = '卷烟库存表')
DROP TABLE 卷烟库存表
GO
IF EXISTS (SELECT NAME FROM SYSOBJECTS WHERE XTYPE = 'U' AND NAME = '卷烟销售表')
DROP TABLE 卷烟销售表
GO
--业务规则:销售金额 = 销售数量 * 销售单价 业务规则。
CREATE TABLE 卷烟销售表
(
卷烟品牌 VARCHAR(40) PRIMARY KEY NOT NULL,
购货商 VARCHAR(40) NULL,
销售数量 INT NULL,
销售单价 MONEY NULL,
销售金额 MONEY NULL
)
GO
--业务规则:库存金额 = 库存数量 * 库存单价 业务规则。
CREATE TABLE 卷烟库存表
(
卷烟品牌 VARCHAR(40) PRIMARY KEY NOT NULL,
库存数量 INT NULL,
库存单价 MONEY NULL,
库存金额 MONEY NULL
)
GO
--创建触发器,示例1
/*
创建触发器[T_INSERT_卷烟库存表],这个触发器较简单。
说明: 每当[卷烟库存表]发生 INSERT 动作,则引发该触发器。
触发器功能: 强制执行业务规则,保证插入的数据中,库存金额 = 库存数量 * 库存单价。
注意: [INSERTED]、[DELETED]为系统表,不可创建、修改、删除,但可以调用。
重要: 这两个系统表的结构同插入数据的表的结构。
*/
IF EXISTS (SELECT NAME FROM SYSOBJECTS WHERE XTYPE = 'TR' AND NAME = 'T_INSERT_卷烟库存表')
DROP TRIGGER T_INSERT_卷烟库存表
GO
CREATE TRIGGER T_INSERT_卷烟库存表
ON 卷烟库存表
FOR INSERT
AS
--提交事务处理
BEGIN TRANSACTION
--强制执行下列语句,保证业务规则
UPDATE 卷烟库存表
SET 库存金额 = 库存数量 * 库存单价
WHERE 卷烟品牌 IN (SELECT 卷烟品牌 from INSERTED)
COMMIT TRANSACTION
GO
/*
针对[卷烟库存表],插入测试数据:
注意,第一条数据(红塔山新势力)中的数据符合业务规则,
第二条数据(红塔山人为峰)中,[库存金额]空,不符合业务规则,
第三条数据(云南映像)中,[库存金额]不等于[库存数量]乘以[库存单价],不符合业务规则。
第四条数据库存数量为0。
请注意在插入数据后,检查[卷烟库存表]中的数据是否 库存金额 = 库存数量 * 库存单价。
*/
Tags: SQL SERVER 数据库 查询分析器 触发器
SQL Server 2000 (SP4)笔记整理(二):数据库表
USE Master
GO
--检查是否存在测试表,若存在,则删除之
IF EXISTS (SELECT NAME FROM SYSOBJECTS WHERE XTYPE = 'U' AND NAME = 'MyTestTable1')
DROP TABLE MyTestTable1
GO
CREATE TABLE MyTestTable1
(
编号 INT PRIMARY KEY NOT NULL IDENTITY(1,1),
姓名 CHAR(8),
别名 VARCHAR(8),
性别 CHAR(2) DEFAULT ('男'),
年龄 INT CHECK(年龄>0 AND 年龄<100),
)ON [PRIMARY]
GO
--插入数据:
/*
下面的语句将不能执行,因为 [编号] 列为系统自动自增列。
INSERT INTO MyTestTable1(编号,姓名,别名,性别,年龄)
VALUES (1,'彭建军','彭建军','男',25)
GO
在当 IDENTITY_INSERT 设置为 OFF 时,不能向表 'MyTestTable1' 中的标识列插入显式值。
*/
--正确的语句,方法一
INSERT INTO MyTestTable1(姓名,别名,性别,年龄)
VALUES ('彭建军','彭建军','男',25)
GO
--方法二:
INSERT INTO MyTestTable1(姓名,别名,性别,年龄)
SELECT '老转','老转','男',30 UNION ALL
SELECT '钱妮','妮子','女',28
GO
--查询数据(注意编号的自增性)
SELECT * FROM MyTestTable1
GO
Tags: SQL SERVER 数据库 查询分析器
SQL Server 2000 (SP4)笔记整理(一):数据库
--数据库创建示例1
--首先必须在C盘下建立[DataBase]文件夹
USE Master
GO
--检查是否存在测试数据库,若存在,则删除之
IF EXISTS (SELECT NAME FROM SYSDATABASES WHERE NAME = 'MyDB')
DROP DATABASE MyDB
GO
CREATE DATABASE MyDB
ON
--数据文件
(
NAME = MyDB_dat,
FILENAME = 'C:\DataBase\MyDB_dat.mdf',
SIZE = 10,--默认值为 MB
MAXSIZE = 50,
FILEGROWTH = 5
)
--日志文件
LOG ON
(
NAME = MyDB_log,
FILENAME = 'C:\DataBase\MyDB_log.ldf',
SIZE = 1MB,
MAXSIZE = 25MB,
FILEGROWTH = 1MB
)
GO
--数据库创建示例2
USE Master
GO
IF EXISTS (SELECT NAME FROM SYSDATABASES WHERE NAME = 'MyDB')
DROP DATABASE MyDB
GO
USE Master
GO
CREATE DATABASE MyDB
ON
--主数据文件
(
NAME = MyDB_dat1,
FILENAME = 'C:\DataBase\MyDB_dat1.mdf',
SIZE = 10,--默认值为 MB
MAXSIZE = 50,
FILEGROWTH = 5
),
--次要数据文件
(
NAME = MyDB_dat2,
FILENAME = 'C:\DataBase\MyDB_dat2.ndf',
SIZE = 10,--默认值为 MB
MAXSIZE = 50,
FILEGROWTH = 5
)
LOG ON
--主日志
(
NAME = MyDB_log1,
FILENAME = 'C:\DataBase\MyDB_log1.ldf',
SIZE = 1MB,
MAXSIZE = 25MB,
FILEGROWTH = 1MB
),
--次要日志
(
NAME = MyDB_log2,
FILENAME = 'C:\DataBase\MyDB_log2.ldf',
SIZE = 1MB,
MAXSIZE = 25MB,
FILEGROWTH = 1MB
)
GO
--删除数据库(请谨慎使用!)
Tags: SQL SERVER 数据库 查询分析器
安装配置ASP.NET
Tags: ASP.Net ASP.Net配置
赞助商链接
热文排行
- 谷歌金山词霸,很好很强大!...
- 通过C#获取Windows系统特殊...
- 在ASP.Net中使用Internati...
- 在Linux中安装MySQL错误及...
- 在Ubuntu中通过源码安装编...
- 在Ubuntu中通过源码安装编...
- 微软发布Visual Studio In...
- Ubuntu 8.10 Intrepid Ibe...
- 博客升级到Z-Blog1.8
- Ubuntu 8.04 LTS正式发布
- Windows 2003 IIS6环境下通...
- SQL SERVER 2000 日志文件...
- 祝大家新春快乐!
- ISBN 10位编号转换成13位的...
- Microsoft.NET Framework ...