数据库使用过程中一些零散的应用,记录下来以便下次使用。
1、触发器
刚才在项目中使用到触发器,现在拿来做记录,以便后续使用。
CREATE TRIGGER ON_DELETE ON [OSCE].[dbo].[QuestionType] FOR DELETE AS BEGIN IF EXISTS ( SELECT * FROM DELETED WHERE QT_TD> 38 AND QT_ID < 41) ROLLBACK; END
本触发器的意思是:创建触发器on_delete,确保数据库表 [OSCE].[dbo].[QuestionType] 中的QT_ID是39、40的这两条记录不被删除。如果删除了,则回滚。
删除触发器:drop Trigger on_delete
两个表:写入表和读取表,数据保持同步,两个触发器,一个插入一个更新:
USE [TABLENAME] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER TRIGGER [dbo].[tgr_order_insert] ON [dbo].[Order] AFTER INSERT AS BEGIN --FROM table [Order] DECLARE @Id [uniqueidentifier]; DECLARE @AccessionNumber [nvarchar](128); DECLARE @Age [int]; DECLARE @AgeUnit [nvarchar](50); SELECT @Id = [Id], @AccessionNumber = [AccessionNumber], @Age = [Age] FROM inserted; --插入OrderQuery INSERT INTO [dbo].[OrderQuery] ( [Id], [AccessionNumber], [Age] ) VALUES ( @Id, @AccessionNumber, @Age ); EXEC [dbo].[SP_UpdateOrderQueryExtendFields] @Id END