0
是否有可能爲MySQL觸發器提供密碼? 我需要在BEFORE INSERT觸發器中加密我的數據並在視圖中對其進行解密。 也許有辦法將它存儲在當前會話中?MySQL觸發服務密碼
或者是數據庫層中的en-和解密一般是壞主意?
非常感謝=)
是否有可能爲MySQL觸發器提供密碼? 我需要在BEFORE INSERT觸發器中加密我的數據並在視圖中對其進行解密。 也許有辦法將它存儲在當前會話中?MySQL觸發服務密碼
或者是數據庫層中的en-和解密一般是壞主意?
非常感謝=)
考慮下面的觸發和事件
模式:
CREATE SCHEMA triggerTest;
USE triggerTest;
DROP TABLE IF EXISTS account;
CREATE TABLE account
( id INT auto_increment PRIMARY KEY,
acct_num INT NOT NULL,
amount DECIMAL(10,2) NOT NULL,
insertDT DATETIME NOT NULL,
updtBy VARCHAR(100) NULL -- user (or 'EVENTx' see below) that did the last insert
)ENGINE=InnoDB;
插入觸發器:
DROP TRIGGER IF EXISTS acctBefInsTrig;
DELIMITER $$
CREATE TRIGGER acctBefInsTrig BEFORE INSERT ON account
FOR EACH ROW
BEGIN
SET NEW.updtBy = @theVar;
END;$$
DELIMITER ;
事件:
DROP EVENT IF EXISTS `myEvt001`;
DELIMITER $$
CREATE EVENT myEvt001
ON SCHEDULE EVERY 1 MINUTE STARTS '2016-01-01 00:00:00'
ON COMPLETION PRESERVE
DO
BEGIN
SET @theVar='myEvt001';
INSERT account(acct_num,amount,insertDT) VALUES (102,2000,NOW());
END $$
DELIMITER ;
測試:
SHOW VARIABLES WHERE variable_name='event_scheduler';
SET GLOBAL event_scheduler = ON;
SET @theVar='Joe'; -- run this only once
SELECT @theVar; -- LINE A1
INSERT account(acct_num,amount,insertDT) VALUES (102,1000,NOW());
SELECT * FROM account; -- watch the Event put a new row in every minute
SET GLOBAL event_scheduler = OFF;
SELECT * FROM account;
+----+----------+---------+---------------------+----------+
| id | acct_num | amount | insertDT | updtBy |
+----+----------+---------+---------------------+----------+
| 1 | 102 | 2000.00 | 2016-08-08 14:03:00 | myEvt001 |
| 2 | 102 | 1000.00 | 2016-08-08 14:03:17 | Joe |
| 3 | 102 | 2000.00 | 2016-08-08 14:04:00 | myEvt001 |
| 4 | 102 | 1000.00 | 2016-08-08 14:04:27 | Joe |
+----+----------+---------+---------------------+----------+
清理:
DROP SCHEMA triggerTest;
簡要敘述。如果我在用戶連接(MySQL Workbench,應用程序)中創建一個用戶變量(一個帶有@符號),則插入觸發器會將其選中。與之一起玩的是顯示的Event,它在具有自己的連接的單獨線程中運行,並且它自己的用戶變量@theVar
的實例。他們不會相互干擾或相互覆蓋。
LINE A1
以上可以重複運行,以顯示事件不會覆蓋我們的用戶變量,因爲,它有它自己的。
對於具有用戶變量的存儲過程與觸發器一樣,情況也是如此。如果已設置用戶變量@theVar
,則該變量可用。
如果密碼是用於登錄認證iterated-salted-hasing是currect方法不加密。 – zaph