mysql中的觸發器和事務的操作,mysql觸發器事務

來源:互聯網
上載者:User

mysql中的觸發器和事務的操作,mysql觸發器事務

觸發器 文法

建立觸發器:

CREATE TRIGGER trigger_name trigger_time trigger_event

              ON tbl_name FOR EACH ROW trigger_stmt;

              trigger_time是觸發程式的動作時間。它可以是BEFORE或AFTER trigger_event指明了啟用觸發程式的語句的類型。

trigger_event可以是下述值之一:

·             INSERT:將新行插入表時啟用觸發程式,例如,通過INSERT、LOAD DATA和REPLACE語句。

·             UPDATE:更改某一行時啟用觸發程式,例如,通過UPDATE語句。

·             DELETE:從表中刪除某一行時啟用觸發程式,例如,通過DELETE和REPLACE語句。

例子:

          mysql-> create trigger test 

                    -> before update on table_name for each row 

                    -> update table_name  set  NEW.updateTime = NOW() where id=NEW.ID; 

        如果監測的表和更新的表是同一個   則可以省略為

  mysql-> create trigger test 

                    -> before update on table_name for each row 

                    -> set  NEW.updateTime = NOW() where id=NEW.ID; 


刪除觸發器:

DROP TRIGGER trigger_name;

例子:

         mysql->drop trigger trigger_name;

查看觸發器:

例子:

         mysql->desc triggers;

或者

        mysql->select * from triggers where trigger_name='xxxxxx';


         mysql->show create  trigger  trigger_name;

======================================================================================

事務的特徵:ACID

  • Atomicity(原子性)
  • Consistency(穩定性,一致性)
  • Isolation(隔離性)
  • Durability(可靠性)

注意:事務只針對對資料資料產生影響的語句有效。

show engines //查看mysql鎖支援的資料引擎。

MyISAM不支援事物,InnoDB支援事物。

預設情況下,MySQL將以自動認可模式運行,這意味著沒一條小命令都將當做一個只有一條命令的事物來執行。

如果要讓mysql支援支援事務,只需要修改資料引擎(alter table person type=INNODB)。

使用start transaction或者begin命令來開啟一個事物,使用commit,或者rollback來結束事物。

事物的結束:事物除了commit,rollback會結束外,使用DDL或者DCL語句也會結束。

儲存點:通過儲存點機制:使用者可以在事物裡用savepoint name命令設定一些儲存點,以後使用者在使用rollback to savepoint name結束事物時,name之前的資料儲存,之後的資料不儲存。

mysql使用事務的關鍵字

  • begin //開啟一個事務。
  • commit //提交到資料庫。
  • rollback //取消操作。
  • savepoint //儲存,部分取消,部分提交。
  • alter table person type=INNODB //修改資料引擎。

樣本:

 
  1. begin  
  2.  
  3. update person set name='efgh' where id =10 
  4.  
  5. select * from person  
  6.  
  7. rollback  
  8.  
  9. select * from person 

樣本:

 
  1. alter table person type=INNODB 
  2.  
  3. begin  
  4.  
  5. update person set name='efgh' where id =10 
  6.  
  7. select * from person  
  8.  
  9. commit  
  10.  
  11. select * from person  
  12.  
  13. begin  
  14.  
  15. delete from person where id=21 
  16.  
  17. update person set name='efgh' where id =10 
  18.  
  19. commit/rollback 

針對上面部分提交,必須用到儲存點。

事務儲存點注意:

1.只能取消到某個儲存點 rollback to savepoint p1。

2.不能提交某個儲存 commit to savepoint p2//錯誤寫法。

3.最後commit 把未取消的儲存點去不提交到資料。

事務儲存點使用例子:

 
  1. begin;  
  2.  
  3. update score set score=40 where scoreid=1;  
  4.  
  5. savepoint s1;  
  6.  
  7. update score set score=50 where scoreid=2;  
  8.  
  9. select * from score;  
  10.  
  11. rollback to savepoint s1;  
  12.  
  13. select * from score;  
  14.  
  15. commit; 

mysql 觸發器 交易處理 C# 實現

觸發器是在sql伺服器中自動處理 比如刪除一個使用者,則該使用者的所有消費記錄都刪除
則只用做一個delete觸發器 當刪除這個使用者時 自動就刪除了他的消費記錄

執行sql事務的範例程式碼:
//執行交易處理
public void DoTran()
{  //建立串連並開啟
 SqlConnection myConn=GetConn();
 myConn.Open();
 SqlCommand myComm=new SqlCommand();
 //SqlTransaction myTran=new SqlTransaction();
 //注意,SqlTransaction類無公開的建構函式
 SqlTransaction myTran;
 //建立一個事務
 myTran=myConn.BeginTransaction();
 try
 {
  //從此開始,基於該串連的資料操作都被認為是事務的一部分
  //下面綁定串連和事務對象
  myComm.Connection=myConn;
  myComm.Transaction=myTran; //定位到pubs資料庫
  myComm.CommandText="USE pubs";
  myComm.ExecuteNonQuery();//更新資料
  //將所有的電腦類圖書
  myComm.CommandText="UPDATE roysched SET royalty = royalty * 1.10 WHERE title_id LIKE 'Pc%'";
  myComm.ExecuteNonQuery();
   //提交事務
  myTran.Commit();
 }
 catch(Exception err)
 {
  throw new ApplicationException("事務操作出錯,系統資訊:"+err.Message);
  }
 finally
 {
  myConn.Close();
  }
}

 
MySQL觸發器中可以用事務?一個表的資料更改後觸發另一個表的資料更改,是同時更改兩個表,如果更改一

可以實現,不過比較麻煩,建議用php+mysql來處理。mysql 這方面不是強項
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.