Mariadb

卡在有條件地將記錄插入 MariaDB

  • February 5, 2022

我知道insert ignore。這是沒有用的,因為 MariaDB 不認為 NULL 是唯一索引的一部分。

因此我必須使用if ... else.

但是這段程式碼沒有執行:

select *
from Nodes 
where `Key` = 'FAQPage';

if not found_row() then
  insert into Nodes (`Key`, ParentId)
  values ('FAQPage', null)
end if;

如何使用if ... else有條件地在 MariaDB 中插入數據?

INSERT INTO Nodes (`Key`, ParentId)
SELECT @key, @parentid
WHERE NOT EXISTS ( SELECT NULL
                  FROM Nodes
                  WHERE `Key` <=> @key
                    AND ParentId <=> @parentid )

@key並且@parentid是要插入的值的佔位符。

因此,如果具有要插入的值的行已經存在,那麼子查詢會檢測到這一點,並且不會插入任何行。

引用自:https://dba.stackexchange.com/questions/307046