expo-sqlite как добавить колонку в таблицу, если колонка еще не существует?

Использую expo-sqlite. Хочу добавить к уже существующей таблице колонку, если она не существует через IF NOT EXISTS это не работает.
В интернете нашел что нужно объединить вот эти 2 кода:

ALTER TABLE table_name ADD COLUMN column_name TEXT

SELECT COUNT(*) AS CNTREC FROM pragma_table_info('table_name') WHERE name='column_name'

пробовал через

IFF, CASE THEN ELSE END,
такой вариант тоже пробовал

IF NOT EXISTS (
  SELECT
    *
  FROM
    INFORMATION_SCHEMA.COLUMNS
  WHERE
    TABLE_NAME = 'table_name' AND COLUMN_NAME = 'column_name')
BEGIN
  ALTER TABLE table_name
    ADD column_name TEXT NULL
  END;

Но ничего из этого не работает, подскажите пожалуйста еще какие нибудь варианты.


Ответы (2 шт):

Автор решения: tomato-magnet-regulato
IF NOT EXISTS( SELECT NULL
            FROM INFORMATION_SCHEMA.COLUMNS
           WHERE table_name = 'tablename'
             AND table_schema = 'db_name'
             AND column_name = 'columnname')  THEN

  ALTER TABLE `TableName` ADD `ColumnName` int(1) NOT NULL default '0';

END IF;

Взял тут

→ Ссылка
Автор решения: Dmitry

Мне пришла мысль как это можно сделать через JS, если кому пригодится. доделайте это под себя:

export class DB {
    static AlterColumn(){
        return new Promise((resolve, reject) => {
            db.transaction(tx => {
                tx.executeSql( `ALTER TABLE table_name ADD COLUMN column_name DATE NOT NULL DEFAULT ''`,
                    [],
                    resolve,
                    (_, error) => reject(error)
                );
            });
        });
    }
}

далее в js файле

...
  const arr = useSelector(state => state.db_name.table_name);

  const filterArr = arr.filter(table_name =>  table_name.column_name === '' );
  if(filterArr.length === 0){
     DB.AlterColumn();
  }
...
→ Ссылка