之後刪除電子郵件我有一個觸發器,用於檢查電子郵件的域是否存在於另一個表(域)中。SQL觸發器在@
表用戶:
+------------------+ +------------------+
| email | | domain |
+------------------+ +------------------+
| [email protected] | | gmail.com |
| [email protected] | | live.com |
| [email protected]| |------------------|
|------------------|
觸發是:
IF EXISTS (
SELECT 1
FROM [USER] AS U INNER JOIN inserted AS I
ON U.EMAIL = I.EMAIL
WHERE REPLACE(RIGHT(U.EMAIL, CHARINDEX('@', U.EMAIL)-2),'_',' ') NOT IN (
SELECT DOMAIN_NAME
FROM ALLOWED_DOMAIN
)
)
觸發正確好好嘗試的工作,所以我拼命地跑下面的查詢:
select REPLACE(RIGHT(U.EMAIL, CHARINDEX('@', U.EMAIL)-2),'_',' '), EMAIL
from [USER] U
這樣做具有以下結果:
| unknown | email |
+----------------|--------------- |
| gmail.com | [email protected] |
| ive.com | [email protected] |
| [email protected] | [email protected]|
+----------------|------------------|
現在看起來觸發器將第一條記錄中的字符數量應用於表中的所有記錄...... 如何修復觸發器以使其可以工作多行?
請檢查我的答案 – maSTAShuFu
'RIGHT(U.EMAIL,LEN (u.email) - CHARINDEX('@',U.EMAIL))'將給域的部分 – Serg
以及相反,而不會得到字符串的長度 – maSTAShuFu