2015-10-31 3 views
0

Я довольно новичок в mysql, и я пытаюсь встать и работать с ним в узле, используя node-mysql. Я создал простую таблицу следующим образом:node-mysql use default if null on insert

CREATE TABLE myTable (
    id SERIAL, 
    display BOOLEAN NOT NULL DEFAULT 1, 
    active BOOLEAN NOT NULL DEFAULT 0 
) DEFAULT CHARSET utf8 COLLATE utf8_bin; 

Я вставка строк так:

db.query('INSERT INTO myTable SET ?', { 
    display: myObject.display, 
    active: myObject.active 
}, callback); 

Как говорят документы, узел-MySQL преобразует объект я передаю в ключевые пары значений , Это отлично работает, если определены myObject.display и myObject.active. Если один или оба нет, node-mysql пытается вставить NULL в столбцы, что недопустимо. Я предполагал, что значение по умолчанию будет использоваться в этой ситуации, но оно выдает ошибку о значении NULL. Поэтому мой вопрос:

1) Есть ли какой-нибудь специальный синтаксис для создания таблицы, которая будет использовать значение по умолчанию, когда задано значение null, или 2) Есть ли какой-то элегантный способ сделать это с помощью node-mysql, который не включает в себя кучу разбора объектов?

Не стесняйтесь расширять свой ответ, если вы видите что-то еще, что я мог бы улучшить. Моя большая цель - изучить лучший способ создания надежной, безопасной и сжатой вставки mysql в узле.

+0

Вы объединяете утверждения 'INSERT' и' UPDATE'. – doublesharp

ответ

0

Ваш синтаксис SQL неверен для оператора INSERT.

ВСТАВИТЬ

INSERT into TableName(id, display, active) 
VALUES (?, ?, ?) 

UPDATE

UPDATE TableName SET display = ? 
WHERE id = ? 

Вы бы затем заполнить ? заполнители, используя db.query() и проходящие в ваших аргументах.

+0

Я использую MySQL, а INSERT ... SET кажется эквивалентным INSERT ... VALUES: http://dev.mysql.com/doc/refman/5.7/en/insert.html –

+0

Он также выглядит VALUES ведет себя точно так же. Я все равно получаю сообщение об ошибке: 'Ошибка: ER_BAD_NULL_ERROR: Столбец \ 'display \' не может быть нулевым –

+0

Я бы не сказал« точно », я уверен, что ошибка отличается :) - это указывает на то, что вы проходите в' null "для столбца" display ", и он определяется как' NOT NULL'. – doublesharp