插入或忽略将sqlite转换为mariadb

时间:2019-02-01 17:36:32

标签: sqlite mariadb

我正在尝试将SQlite代码转换为Mariadb,但是我一直在查询另外两个表之间的交叉表

表中的目的是为了与其它表中添加ID,但只有当它们不存在

我有两个桌子

表计算机
ID(主)/ NETBIOS(唯一)/ IP / SOFTWARE_STAT / COPY_STAT / AV_STAT
例如:1个PC1 192.168.1.1 KO KO 0

表软件
ID(主要)/ NAME(唯一)
例如:1个ADOBE

和交叉表
表安装
ID(主要)/ COMPUTER_ID / SOFTWARE_ID / FAIL
1 1 1 0

下面的我的SQLITE代码正常工作

INSERT OR IGNORE INTO INSTALL (COMPUTER_ID,SOFTWARE_ID) 
SELECT 
(SELECT ID FROM COMPUTERS WHERE IP = '192.168.1.1'),
(SELECT ID FROM SOFTWARES WHERE NOM = 'ADOBE') 
WHERE NOT EXISTS 
(SELECT 
COMPUTER_ID,SOFTWARE_ID FROM INSTALL 
WHERE 
COMPUTER_ID = (SELECT ID FROM COMPUTERS WHERE IP = '192.168.1.1') 
AND 
SOFTWARE_ID = (SELECT ID FROM SOFTWARES WHERE NOM = 'ADOBE')
)    

我已经尝试过

INSERT INTO INSTALL (COMPUTER_ID,SOFTWARE_ID) 
SELECT 
(SELECT RowID FROM COMPUTERS  WHERE IP='192.168.1.1'),
(SELECT RowID FROM SOFTWARES  WHERE NOM='ADOBE') 
WHERE NOT EXISTS 
(SELECT COMPUTER_ID,SOFTWARE_ID FROM INSTALL 
WHERE 
COMPUTER_ID = (SELECT RowID FROM COMPUTERS  WHERE IP='192.168.1.1') 
AND 
SOFTWARE_ID = (SELECT RowID FROM SOFTWARES  WHERE NOM='ADOBE'));

没有成功

有人有主意吗?预先感谢。

1 个答案:

答案 0 :(得分:0)

INSERT OR IGNORE-> INSERT IGNORE

但是,有一个冗余:(1)IGNORE,以及(2)NOT EXISTS。就是说,您都验证了它不是dup,并且忽略了它。

否则,Sqlite代码应像在MariaDB中一样工作。什么地方出了错?你得到一个错误?

MariaDB的不具有RowID