Вставить или игнорировать преобразование sqlite в mariadb - PullRequest
0 голосов
/ 01 февраля 2019

Я пытаюсь преобразовать свой код SQlite в Mariadb, но я застрял с запросом на перекрестную таблицу между двумя другими таблицами

Цель таблицы - добавить идентификатор из другой таблицы, нотолько если они не существуют

У меня есть две таблицы

Таблица КОМПЬЮТЕРЫ
ID (основной) / NETBIOS (уникальный) / IP / SOFTWARE_STAT / COPY_STAT / AV_STAT
ex:1 PC1 192.168.1.1 KO KO 0

Таблица ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
ИД (основной) / ИМЯ (уникальный)
ex: 1 ADOBE

И кросс-таблица
Таблица INSTALL
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 голосов
/ 02 февраля 2019

INSERT OR IGNORE -> INSERT IGNORE

Однако у вас есть резервирование: (1) IGNORE и (2) NOT EXISTS.То есть вы оба проверяете, что это не дуплекс, и игнорируете ошибки, если это так.

В противном случае код Sqlite должен работать так же, как в MariaDB.Что пошло не так?Вы получили ошибку?

MariaDB не имеет RowID.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...