Учитывая простой запросMySQL против SQLite: прибавка с пустой строки первичного ключа
$query = 'INSERT INTO `menu` (`id`,`name`,`value`) VALUES (:id,:name,:value);';
и вводно-Params массив
$params = [':id' => '', ':name' => 'John', ':value' => 'ABC'];
где id
является столбец PRIMARY KEY
и AUTOINCREMENT
. В mysql столбец id
автоинкремлен, даже если переданное значение представляет собой пустую строку ''
; то же самое не относится к SQLite, так как ошибка генерируется
SQLSTATE[HY000]: General error: 20 datatype mismatch
Вопрос: Есть ли способ заставить SQLite для увеличения поля первичного ключа при условии, пустая строка?
Фон из docs:
на вставке, если ROWID или целочисленное ПЕРВИЧНЫЙ столбца KEY не явно присвоено значение, то оно будет заполнено автоматически неиспользуемом целое число, как правило, один больше, чем самый большой ROWID, который в настоящее время используется.
и
Если нет ROWID не указано на вкладыше, или если указанный ROWID имеет значение NULL, то соответствующий ROWID создается автоматически.
'$ query = 'INSERT INTO menu (' name ',' value ') VALUES (: name,: value);';' и '$ params = [': name' => 'John', ' ': value' => 'ABC']; ' –
@ A-2-A да, я знаю об этом. Тем не менее я хотел бы сохранить пустой параметр. – sitilge
Это невозможно, потому что это столбец 'primary' и' auto-incremented'. 'primary' не принимает нулевые значения. –