2012-01-04 3 views
0

Я пытаюсь вставить данные в таблицу (table1) на основе другой (table2), единственная проблема заключается в том, что таблица1 содержит поля, для которых не допускаются пустые значения. Нужно ли создавать эти поля в таблице2, где я извлекаю данные и заполняю их значением?MySQL вставить из другой таблицы, где поля не являются нулевыми

Пример не нулевое поле: пароль

Если я не включить это в моем запросе я получаю сообщение об ошибке, и запись не вставлено, однако если я создаю поле в table2 затем вставить в мой запрос работает нормально , Это кажется немного необычным. Пример запрос ниже:

Пример 1 (без пароля поля в таблице 2):

$insert_new_records_query = "INSERT INTO table1 (first_name, last_name, email_address) ". 
"SELECT firstname, lastname, email FROM table2"; 

Это создает ошибку о том, что должно включать в себя поле пароля.

Пример 2 (поле пароля в таблице 2):

$insert_new_records_query = "INSERT INTO table1 (first_name, last_name, password, 
email_address) ". 
"SELECT firstname, lastname, password = 'password1', email FROM table2"; 

Это позволяет запись должна быть создана. Проблема в том, что у меня есть еще много полей, которые не равны нулю в таблице 1, и я не думаю, что мне нужно создать их в таблице 2 как пустые поля и вставить их в мой запрос со значениями, чтобы создать запись. Есть лучший способ сделать это?

+0

Можете ли вы изменить поля «не нуль» в таблице1, чтобы разрешить NULL? –

+0

Что вы пытаетесь выполнить с помощью этой настройки? – thomaux

+0

@ZackMacomber, что не имеет смысла, если поля будут иметь нулевые значения, ограничений не будет, в первую очередь. Если OP не может управлять первой таблицей, но нам не хватает такой информации. – thomaux

ответ

1

Вам не нужно создавать поля, вы можете просто «выбрать» значения по умолчанию. Попробуйте это вместо:

INSERT INTO table1 (first_name, last_name, password, email_address) 
    SELECT firstname, lastname, 'password1', email FROM table2 
+0

Кроме того, вы не хотите сохранять пароль в виде обычного текста, вы должны использовать «SELECT firstname, lastname, PASSWORD ('password1'), email FROM table2 ". http://dev.mysql.com/doc/refman/5.0/en/encryption-functions.html#function_password –

+0

Вау! Спасибо за быстрый ответ, ребята, это было быстро. Извиняюсь, если я не уточнил, но мне нужно заполнить непустые поля в таблице с указанием значения, но я думал, что это нужно сделать, чтобы создать все эти поля дополнений в таблице 2, чтобы они могли быть выбраны в моем запросе , Спасибо @a_sad_dude, что ваш ответ работает для меня ... и никаких дополнительных полей таблицы в таблице 2 !!! –

+0

Приятно это слышать. Не забудьте принять ответ) –

Смежные вопросы