[英]When inserting a new row in table A, another row also gets inserted in table B
[英]How to encrypt/decrypt data in some columns of a table and when a new record gets inserted it should also get encrypt
我知道這樣插入新記錄
INSERT INTO dbo.Customer_data (Customer_id, Customer_Name, Credit_card_number)
VALUES (25665, 'mssqltips4', EncryptByKey( Key_GUID('SymmetricKey1'), CONVERT(varchar,'4545-58478-1245') ) );
但是我想用應該被加密的普通插入語句插入一條新記錄。 例如:
INSERT INTO dbo.Customer_data (Customer_id, Customer_Name, Credit_card_number)
VALUES (25665, 'mssqltips4','4545-58478-1245') ) );
幾個月前,我遇到過類似情況。 包含個人數據的表需要對某些列進行加密,但是該表在舊版應用程序中使用並且具有許多引用。
因此,我可以創建一個單獨的表來保存加密的數據:
CREATE TABLE [dbo].[Customer_data_encrypted]
(
[customer_id] PRIMARY KEY -- you can create foreign key to the original one, too
,[name] VARBANRY(..)
,[cretit_card_numbe] VARBINARY(..)
);
然后在原始表上創建一個INSTEAD OF INSERT UPDATE DELETE
觸發器,觸發器中的邏輯很簡單:
***
或43-****-****-****
) 然后,執行一次初始遷移,以將數據從原始表移至新表,然后對其進行屏蔽。
執行上述步驟非常好,因為:
EXECUTE AS OWNER
創建觸發器,以便能夠訪問對稱密鑰並直接在T-SQL語句中執行更改,而無需打開證書或無法訪問證書的用戶 這取決於您的環境和業務需求,因為對於其中一個表,我已將加密值存儲為新列,而不是單獨的表。 因此,選擇更適合您的東西。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.