1. 程式人生 > >SQL觸發器--插入時判斷資料是否已存在

SQL觸發器--插入時判斷資料是否已存在

判斷插入的人員身份證號是否已存在,如存在則取消插入,並給出提示。
--身份證號唯一,但並非主鍵,主鍵是ZA0100
create TRIGGER flx_isexist
ON FD01
for INSERT
AS
begin
 declare @id varchar(20)
 declare @key varchar(64)
 select @id=aa0177,@key=ZA0100 from inserted

 IF ((select count(*) from FD01 where aa0177 = @id)>1)
 begin 
  delete from fd01 where [email protected]


  raiserror ('該身份證使用者已存在!',16,1)
  return
 end
end
使用事務,可以更簡潔,如下:
create TRIGGER flx_isexist
ON FD01
for INSERT
AS
begin
   declare @id varchar(20)
   select @id=aa0177 from inserted
   IF ((select count(*) from FD01 where aa0177 = @id)>1)
   begin 
      rollback tran
      raiserror ('該身份證使用者已存在!',16,1)
      return
   end
end
觸發器可以理解為一種特殊的儲存過程,區別在於:呼叫執行還是觸發執行。

相關推薦

SQL觸發器--插入判斷資料是否存在

判斷插入的人員身份證號是否已存在,如存在則取消插入,並給出提示。 --身份證號唯一,但並非主鍵,主鍵是ZA0100 create TRIGGER flx_isexist ON FD01 for INSERT AS begin  declare @id varchar(20)  declare @key va

mysql 觸發器 監聽這個表插入增加資料 在某欄位變動進行觸發

專案觸發器 在mysql 表中增加  需求 當這個表 新增記錄的時候觸發 DROP TRIGGER IF EXISTS t_make_data; //刪除原先的觸發器 CREATE TRIGGER t

sql觸發器指令碼編寫之資料按時間歸檔

涉及表:trmSNHUISUB 欄位:       [WAREHOUSE]       ,[PLSN_HU]       ,[PLSN_BARCODE]       ,[PLSN_QRCODE1]       ,[PLSN_QRCODE2]       ,[PLSN_QR

mysql插入判斷資料是否存在

業務場景:需要記入訪客的訪問情況,但不能重複記入 可以插入前進行判斷要插入的資料是否存在業務程式碼如下 : INSERT INTO t_topic_vistor(user_id,topic_code

SQL不同伺服器資料庫之間資料操作(當在一個伺服器的某張表中有資料更新,將更新值通過觸發器插入到另一個伺服器的指定表中)

第一步:在建立觸發器的伺服器上建立連結伺服器 建立連結伺服器有兩種方法:1.通過SQL語言建立,2.通過資料庫管理工具建立,下面分別進行詳細介紹: 1.通過SQL語言建立 通過SQL語言建立連結伺服器方法 2.通過資料庫管理工具建立(這裡以SQL SER

關於MongoDB中如何做到對資料插入更新欄位,不存在插入新的Document

背景需求: * 比如我們有這樣一個需求,有兩個excel中的資料,需要插入到資料庫中,這個兩個excel中的資料有些欄位都是一樣的,比如本例所寫的,電臺名稱是一樣的,省市縣也是一樣的,而不一樣的是

ORACLE觸發器:在insert之前,判斷這條插入語句是否可插入,不可插入拋異常........

CREATE OR REPLACE TRIGGER "RQC_RECORD_TRI_INS"  BEFORE insert ON RQC_RECORD FOR EACH ROW DECLARE     NEW_TIME VARCHAR2(8);     START_TIME

sql server觸發器實現插入操作另一張表

以前都是也得mysql,現在寫sqlserver的觸發器,感覺改動還是蠻大的 1.定義變數 #在mysql中變數直接這麼定義就可以了 SET @VALUE = "111"; #在sql server中 declare @count int; #並賦值 set @count

mysql 插入判斷條件

exist mysq eight 多條 weight union sql IV 查找 INSERT INTO table (f1 ,f2 ,f3) SELECT 1 ,‘a‘,3 FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM

用JAVA連線SQL實現插入資料

         直接由程式碼來決定插入的資料。 <%@ page language="java" contentType="text/html; charset=UTF-8" import="java.sql

SQL Server插入資料和刪除資料

首先在我的Student表中插入幾條資料,由於我的表已經建立完成了,所以就沒有建立表的 sql 語句了,不過可以看我的上一篇文章: http://www.cnblogs.com/Brambling/p/6649350.html 插入資料sql語句: 1  insert into Student(S

【PHP+MYSQL】批量插入表中有相同資料的話則批量更新

應用場景 有時候我們向資料庫插入記錄時,有時會有這種需求,當符合某種條件的資料存在時,去修改它,不存在時,則新增資料的情況。 比如說系統配置則一塊,如有下表: CREATE TABLE `system_config` ( `id` int(11) unsigned NOT N

sql隨機插入資料--記錄

sql面試題中經常出現一張學生表,表字段有學生ID,學生課程,學生成績 今天要實測,so,需要有資料,now,隨機生成資料,,, 1 create table student 2 ( 3 id varchar(50), --編號 4 class varchar(50),--課

java中呼叫Oracle儲存過程,出現異常:java.sql.SQLException: ORA-00928: 缺失 SELECT 關鍵字(解決)

在java中呼叫Oracle儲存過程時,出現異常:java.sql.SQLException: ORA-00928: 缺失 SELECT 關鍵字 //java程式碼 @Test public void testProcedure(){

mybatis插入更新刪除資料,成功但是不能寫入資料庫

mybatis進行查詢select操作時 session.select("statement", "parament“); 成功,可以獲取到結果。 但是增刪改時僅僅一句sesseion.[操作

一條sql插入多行資料mysql和oracle的不同寫法

轉載出處: 由於要將mysql資料庫轉為oracle,mybatis的對映檔案裡面的批量插入用的mysql的多個values的形式,但是換成oracle庫之後sql報錯。所以.oracle並不支援這種一個insert into 多個values的方法 mysql:INSE

mybatis+oracle新增資料如果資料存在就更新,如果不存在就插入

判斷需要插入的資料是否存在,如果不存在就更新 <insert id="saveBatch" parameterType="java.util.List" >   MERGE INTO 表名 T   USING (  <foreach collection=

oracle寫一個先插入一條資料,在將該資料中一個欄位更新的觸發器的坑

最近剛用使用觸發器,原理上應該是在插入之後再更新,原本以為是以下這種寫法,在網上也找了很多方法,結果說的都不太對.需要更新的欄位根本沒有被更新,我想應該是邏輯上的問題: create or replace trigger UPDATE_REDLIST_TYPE afte

【Java】sql實現插入插入值的主鍵自增,防止遷移資料時報主鍵衝突的錯誤;

一、問題 我們要自己造一些測試資料,並且這些SQL指令碼要遷移到其他環境,遷移過程中,如果主鍵寫死,在其他環境,可能會出現主鍵衝突;所以,我們要寫活的主鍵,實現起來也很簡單; 二、解決方法 insert into userInfo(id,name,age)val

Python MongoDB 插入資料存在則不執行,不存在則插入

想把QQ日誌爬蟲(Python)爬下來的日誌儲存到 MongoDB 裡面。  但 insert 的時候報錯: <code class="hljs mel has-numbering" style="display: block; padding: 0px; background: transpare