Я знаю три способа решения этой проблемы.
- С помощью хранимой процедуры.
- Игнорирование ошибки и продолжение.
- Работа алгоритма в бэкэнде
Я бы решил с Node в моем бэкэнде. Поэтому я сделал это.
let exist = false
connection.query(`
SELECT IF(count(*) = 1, 'Exist','Not Exist') AS result
FROM information_schema.columns
WHERE table_schema = 'database'
AND table_name = 'table_name'
AND column_name = '${columnName}';
`,
(error, results, fields) => {
if (error) throw error
else if (results[0].result === 'Exist') {
exist = true
}
}
)
if (!exist) {
connection.query(`
ALTER TABLE ofertas
ADD COLUMN ${columnName} VARCHAR(255);
`,
(error, result, fields) => {
if (error) throw error
}
)
}
Этот код не работает. Я считаю, что проблема асинхронная, потому что Существуют всегда верно. Я использую MySQL модуль