簡體   English   中英

mySQL 比較觸發器中的兩個不同列值

[英]mySQL compare two different column values in trigger

我正在嘗試使用觸發器檢查表中的兩個值是否相同,如果相同,則將信息插入到另一個表中。 我的代碼如下。

user_id 是一個 INT(10) post_author_id 是一個 VARCHAR(33) 8utf_unicode_ci

CASE
WHEN (new.user_id = (SELECT CAST(post_author_id AS UNSIGNED INTEGER) FROM Cvr_hooks_501_1000)) 
THEN
INSERT INTO Cvr_1_link_501_1000 (a_hook_id, a_user_id, a_post_id, a_post_author_id)

VALUES (new.hook_id, 
        new.user_id, 
        new.post_id, 
        new.post_author_id);

END CASE

任何幫助表示贊賞!

您可以使用EXISTS檢查用戶是否已經存在

CREATE tABLE Cvr_hooks_501_1000(post_author_id vaRCHAR(39))
 INSERT INTO Cvr_hooks_501_1000 VALUES ("1")
 CREATE TABLE account(hook_id int, user_id int(11) ,post_id int, post_author_id int)
 CREATE TABLE Cvr_1_link_501_1000 (a_hook_id int, a_user_id int(11) ,a_post_id int, a_post_author_id int)
 CREATE TRIGGER upd_check AFTER INSERT ON account FOR EACH ROW BEGIN IF ( EXISTS(SELECT 1 FROM Cvr_hooks_501_1000 WHERE post_author_id = new.user_id)) then INSERT INTO Cvr_1_link_501_1000 (a_hook_id, a_user_id, a_post_id, a_post_author_id) VALUES (new.hook_id, new.user_id, new.post_id, new.post_author_id); END IF; END
 INSERT INTO account VALUES(1,1,1,1)
 SELECT * FROM Cvr_1_link_501_1000
\n a_hook_id |  a_user_id |  a_post_id |  a_post_author_id\n --------: |  --------: |  --------: |  ---------------:\n         1 |  1 |  1 |  1\n

db<> 在這里擺弄

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM