導航:首頁 > IDC知識 > mysql觸發器跨伺服器

mysql觸發器跨伺服器

發布時間:2020-12-13 04:32:10

1、在mysql中的兩個不同的資料庫之間建立觸發器連接?

若想利用copy此方法達到反向同步則可能出現問題,比如想在parkfee資料庫有新數據插入時讓當前資料庫也同時插入一條記錄,建立一個觸發器,則形成了一個循環觸發,當插入數據時會報大於最大遞歸次數錯。因此因避免這樣的觸發循環,若要達到類似效果還須想別的方法。(待續)
補充:
若兩個庫處於不同的資料庫伺服器則應先進行以下操作:
在 server1 上創建連接伺服器,以便在 server1 中操作 server2,實現同步
exec sp_addlinkedserver 'server2','','SQLOLEDB','server2的資料庫實例名或ip'
exec sp_addlinkedsrvlogin 'server2','false',null,'用戶名','密碼'
go

2、mysql觸發器能操作不同ip地址伺服器上的資料庫嗎?

1 直接的話,試試federated能不能滿足。
在1伺服器上開啟federated引擎支持,創建一個內federated引擎表bb2表connection到2伺服器的b表
在容aa的觸發器中更新bb2表。
不過federated有較多的限制,也缺乏錯誤檢測,整個過程的實現需要考慮周全。
2 間接的話,只能把aa表數據同步過去,在2伺服器中使用修改後的aa觸發器更新bb表。

3、mysql觸發器能操作不同的資料庫嗎

1 直接的話,試試federated能不能滿足。
在1伺服器上開啟federated引擎支持,創建一個federated引擎表bb2表connection到2伺服器的b表
在aa的觸專發器中更新bb2表。屬
不過federated有較多的限制,也缺乏錯誤檢測,整個過程的實現需要考慮周全。
2 間接的話,只能把aa表數據同步過去,在2伺服器中使用修改後的aa觸發器更新bb表。

4、如何實現跨庫觸發(不同伺服器)mysql支持嗎

1 直接的話,試抄試federated能不能滿足。襲
在1伺服器上開啟federated引擎支持,創建一個federated引擎表bb2表connection到2伺服器的b表
在aa的觸發器中更新bb2表。
不過federated有較多的限制,也缺乏錯誤檢測,整個過程的實現需要考慮周全。
2 間接的話,只能把aa表數據同步過去,在2伺服器中使用修改後的aa觸發器更新bb表。

5、MySQL創建觸發器實現統一主機下兩個資料庫的表同步

首先,建立要用於測試的 資料庫 與 表。
create database a;
create database b;

use a
create table table1(id int, val int);

use b
create table table2(id int, val int);

然後建觸發器

use a

DELIMITER //
CREATE TRIGGER tr_Insert_t1
AFTER INSERT ON table1
FOR EACH ROW
BEGIN
-- 檢查當前 環境,避免遞歸.
IF @disable_trigger IS NULL THEN
-- 設置禁用觸發器標志.
SET @disable_trigger = 1;
-- 插入目標表
INSERT INTO
b.table2
VALUES
(new.id, new.val);
-- 恢復禁用觸發器標志.
SET @disable_trigger = NULL;
END IF;
END;
//
DELIMITER ;

use b

DELIMITER //
CREATE TRIGGER tr_Insert_t2
AFTER INSERT ON table2
FOR EACH ROW
BEGIN
-- 檢查當前 環境,避免遞歸.
IF @disable_trigger IS NULL THEN
-- 設置禁用觸發器標志.
SET @disable_trigger = 1;
-- 插入目標表
INSERT INTO
a.table1
VALUES
(new.id, new.val);
-- 恢復禁用觸發器標志.
SET @disable_trigger = NULL;
END IF;
END;
//
DELIMITER ;

測試執行效果:

mysql> use b
Database changed
mysql> insert into table2 values(2,2);
Query OK, 1 row affected (0.01 sec)

mysql> use a
Database changed
mysql> insert into table1 values (1, 1);
Query OK, 1 row affected (0.00 sec)

mysql> select * from table1;
+------+------+
| id | val |
+------+------+
| 2 | 2 |
| 1 | 1 |
+------+------+
2 rows in set (0.00 sec)

mysql> select * from b.table2;
+------+------+
| id | val |
+------+------+
| 2 | 2 |
| 1 | 1 |
+------+------+
2 rows in set (0.00 sec)

6、求教,mysql如何創建一個觸發器,實現兩個表中的某一列的數據同步且一樣?

首先觸發該觸發器肯定是要在更新完成後,也就是insert、update、delete完成後再執行更新B表對應的數據,當然了,觸發器肯定是針對A表來寫,這個是一個比較簡單的觸發器

7、mysql觸發器問題

括弧裡面的查詢返回多了,只能返回一行,所以你檢查一下條件

8、Mysql資料庫內的觸發器能夠主動發送通知到伺服器嗎?

觸發器僅是資料庫內部的應用,與外部程序無關。所以理論上也不存在什麼通知外部程序。
有些資料庫產品,在觸發器內可以調用一些外部命令,但MYSQL目前的標准版本中沒有這種功能。
關鍵看你想實現什麼樣的功能。

9、MYSQL怎麼實現跨庫觸發器

CREATE TRIGGER t_afterinsert_on_tab1
AFTER INSERT ON tab1
FOR EACH ROW
BEGIN
insert into <span style="color: #FF0000;">db2</span>.tab2(tab2_id) values(new.tab1_id);
END;

10、mysql觸發器,觸發後對該表進行其他的操作

存在一個遞歸調用,你觸發器插入另一條數據(a.d,e)的時候也會執行觸發器代碼...肯定是會報錯的。建個中間表的辦法其實也存在遞歸,所以報同樣的錯誤。感覺沒方法可行...或許我了解還不夠吧.

與mysql觸發器跨伺服器相關的知識