1,存储过程 - PROCEDURE(简写Proc)
2,触发器 - TRIGGER
3,索引 - index
存储过程的创建:
例1:
CREATE PROCEDURE Pro_CGtoSale --存储过程名称
@ParameterPKNum VARCHAR(30) ,
@ParameterGuid VARCHAR(50) --...参数
AS
BEGIN --开始执行业务
UPDATE 表A
SET A列= Temp表B.SumQuantity
FROM ( SELECT SUM(Quantity) SumQuantity ,
列1,
列2
FROM 表B
WHERE 条件
GROUP BY 列1,
列2
) Temp表B
WHERE Temp表B.列1= 表A.PkCode --两张表相关联的字段
AND Temp表B.列2= 表A.对应列(具有唯一性Guid)
AND 表A.PkCode = @ParameterPKNum
AND 表A.GUID = @ParameterGuid;
END;
--删除触发器 DROP PROC Pro_CGtoSale
触发器创建:
"这里只讲述创建,可以自己去详细了解'触发器的种类(DML,DDL,登录触发器)',以及优缺点"等
1,新增触发器
--创建新增触发器
CREATE TRIGGER Tr_InsertCGTable ON 表A --(所属表的触发器)--创建的触发器名称
FOR INSERT --属于新增触发器
AS
BEGIN
DECLARE @InsertTempQuantity DECIMAL(19,6) --定义新增字段内容
SET @InsertTempQuantity=(SELECT Inserted.Quantity FROM Inserted) --Insered为新增记录的数据
DECLARE @PKCode VARCHAR(50) --
SET @PKCode=(SELECT Inserted.ExpPactNum FROM Inserted)
--下面做业务数据处理
UPDATE ......
END
--删除触发器DROP TRIGGER Tr_InsertCGTable
2,修改触发器
CREATE TRIGGER Tr_UpdateCGTable ON 表A --触发器所属表
FOR UPDATE --属于修改触发器
AS
BEGIN
IF (UPDATE(Quantity)) --触发字段
BEGIN
DECLARE @PKCode VARCHAR(50); --定义一个参数
SET @PKCode = ( SELECT Inserted.PactNum
FROM Inserted
);
--这里获取修改内容需要注意,修改后的内容从Inserted中查,修改前是从deleted中查,因为数据库修改记录是先删除后增加
--数据业务处理
--update ......
END;
END;
3,删除触发器
CREATE TRIGGER Tr_DeleteCHTable ON 表A
FOR DELETE
AS
BEGIN
DECLARE @PKCode VARCHAR(50); --
SET @PKCode = ( SELECT Deleted.PactNum
FROM Deleted
);
--数据业务逻辑
--update
END;
索引的创建
索引分为 聚集索引和非聚集索引
聚集索引(如果是频繁修改的字段不建议创建聚集索引)
CREATE INDEX Index_GuidAndPactnum --索引名称
ON 表A (列A,列B...)