Вставьте в таблицу App.settings следующие значения:
(99, DEFAULT, "horizontal", "2015-09-15 04:01:04")
У меня есть БАЗА ДАННЫХ под названием Приложение с таблицей настроек. Я пытаюсь вставить в таблицу, но, похоже, не понимаю.
Мое заявление:
INSERT INTO App.settings
VALUES(99, DEFAULT, "horizontal", "2015-09-15 04:01:04");
Правильно ли я делаю? Он говорит, что мой ответ неправильный.
mysql> DESC App.settings;
+-----------------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+---------------------+------+-----+---------+-------+
| user_id | int(7) | NO | | NULL | |
| email_frequency | tinyint(2) unsigned | YES | | NULL | |
| layout | varchar(70) | YES | | NULL | |
| updated_at | datetime | YES | | NULL | |
+-----------------+---------------------+------+-----+---------+-------+
4 rows in set (0.01 sec)
Какие столбцы есть в App.settings? Можете ли вы использовать DESC App.settings и показать нам результат? Кроме того, какую СУБД вы используете? (MySQL, Oracle, MSSQL, MongoDB, ...)






Когда вы используете insert, всегда перечисляет столбцы в таблице. Во-вторых, разделителем строк по умолчанию является одинарная кавычка в SQL, а не двойная кавычка.
Итак, я ожидал увидеть:
INSERT INTO App.settings (col1, col3, col4) -- your real column names here
VALUES (99, 'horizontal', '2015-09-15 04:01:04');
Обратите внимание, что col2 был удален из INSERT и VALUES, потому что вам, кажется, требуется значение DEFAULT. Не все базы данных поддерживают этот синтаксис.
Почему всегда? Если таблица не подлежит изменению, я бы не сказал, что это абсолютно необходимо.
@Близнец . . . Потому что люди, изучающие SQL, должны научиться делать это правильно. Если вы опытны и знаете, когда не следует использовать имена столбцов, то вы проигнорируете совет. Есть только один случай, когда я не указываю имена столбцов, и это что-то особенное. I всегда перечисляет имена столбцов для невременных таблиц. Я не хочу, чтобы изменения в структурах таблиц вызывали поведение непредвиденный в коде.
Я использую это выражение: INSERT INTO App.settings VALUES (99, DEFAULT, 'horizontal', '2015-09-15 04:01:04'); Я получаю сообщение об ошибке [Ошибка]: Задача 1. Ожидается: Вставьте в таблицу App.settings указанные значения. Попробуй еще раз.
@GordonLinoff А, если писать код, я определенно с вами согласен. Мы всегда должны включать названия столбцов. Однако из его примера я подумал, что это не похоже на то, что он пытался использовать это в коде.
Может быть, мне нужно использовать ключевое слово ALTER?
@RuskiCode Нет, не знаешь. Ключевое слово ALTER используется для ALTER, обрабатывающего саму таблицу, а не ее содержимое (например, добавление / удаление / изменение столбцов таблицы; но не значений самих строк).
вы уверены, что все поля кортежа присутствуют, и если да, то они находятся в правильном порядке, если вы не вводите все поля кортежа, вы должны использовать следующую форму: INSERT INTO App.settings(value, config, position, date ) VALUES(99, "DEFAULT", "horizontal", "2015-09-15 04:01:04");
В том же порядке
this is only an example i dont know the fields names you must be change for the you are using
Как сказал @GordonLinoff, вы должны включить столбцы в свой запрос. Таким образом, вы также можете пропустить ввод значения DEFAULT для email_frequency.
Что касается ошибки, то, скорее всего, это двойные кавычки, которые вы сейчас используете вместо одинарных.
Попробуйте следующее:
INSERT INTO App.settings (user_id, layout, updated_at)
VALUES (99, 'horizontal', '2015-09-15 04:01:04');
В стандартном SQL строки заключаются в одинарные кавычки:
(99, DEFAULT, 'horizontal', '2015-09-15 04:01:04'). Имена объектов заключаются в двойные кавычки:"App"."settings"