#sql #sqlanywhere
#sql #sqlanywhere
Вопрос:
Я не могу вставить значение, используя этот код:
insert into t_category_values (CategoryCode,
CategoryValueCode, CategoryValue) values(2, 1, 1);
сообщение об ошибке
no primary key
Комментарии:
1. Неправильный запрос: покажите структуру вашей таблицы и скажите мне, что именно вы хотите отправить??
2. вставьте значения в CategoryCode, CategoryValueCode и CategoryValue..
3. @Moon
CategoryCode, CategoryValueCode and CategoryValue
— это имя атрибута или таблицы?? каково имя вашей таблицы? этоt_category_values
4. Используете ли вы MySQL или SQL Anywhere?
Ответ №1:
Ваш запрос неверен, он должен быть:
INSERT INTO `DBA`.`t_category_values`
(CategoryCode, CategoryValueCode, CategoryValue)
VALUES(1, 1, "aaa");
Смотрите здесь для получения дополнительной справки: Sql Insert Wiki
Редактировать:
Ваш запрос и ошибка:
вставить в t_category_values (CategoryCode, CategoryValueCode, CategoryValue) значения (2, 1, 1);
нет первичного ключа
В insert при указании вставить в несколько столбцов вместо all в таблице вы должны указать primary key. Это означает, что в вашем одном из CategoryCode, CategoryValueCode, CategoryValue должен быть первичный ключ или включать четвертый столбец, который является первичным ключом в таблице.
Комментарии:
1. Да, или он хочет,
insert into ... select from.
хотя это может быть подходящей идеей.2. @Macro: вот почему я обновил его и попросил OP попробовать обновленный запрос.
Ответ №2:
insert into `DBA`.`t_category_values` (`CategoryCode`, `CategoryValueCode`, `CategoryValue`) values(1, 1, "aaa");
Ответ №3:
Попробуйте это (отредактировано, потому что вы используете Sybase SQL где угодно):
INSERT INTO dba.t_category_values
(CategoryCode, CategoryValueCode, CategoryValue)
VALUES(1, 1, 'aaa');
ОТРЕДАКТИРОВАНО:
с веб-страницы Sybase: Добавление строк в таблицу
Предположим, что создан новый восточный отдел продаж с тем же менеджером, что и текущий отдел продаж. Вы можете добавить эту информацию в базу данных, используя следующую инструкцию INSERT:
INSERT
INTO department ( dept_id, dept_name, dept_head_id )
VALUES ( 220, 'Eastern Sales', 902 )
Если вы допустили ошибку и забыли указать один из столбцов, SQL Anywhere сообщает об ошибке.
Значение NULL — это специальное значение, используемое для указания на то, что что-то либо неизвестно, либо неприменимо. Некоторым столбцам разрешено содержать значение NULL, а другим — нет.
Комментарии:
1. Синтаксическая ошибка в строке 1, столбец 13: недопустимый символ «`» (96), ВСТАВЛЕННЫЙ В
2. @MoonFang: Обратные метки ` (ascii 096) используются в MySQL для разграничения имен таблиц или полей… используете ли вы MySQL?
Ответ №4:
ВСТАВКА выполняется следующим образом:
INSERT INTO `DBA`.`t_category_values`
(CategoryCode, CategoryValueCode, CategoryValue)
VALUES (1, 1, "aaa");
- Вокруг имен таблиц не допускаются «двойные кавычки», обратные знаки.
DBA
это база данных,t_category_values
это таблица. - Назовите столбцы, которые вы хотите заполнить
- Добавьте ‘values’, за которыми следуют значения для этих столбцов.
Если вы хотите вставить данные из другой таблицы, используйте SELECT:
INSERT INTO `DBA`.`t_category_values`
(CategoryCode, CategoryValueCode, CategoryValue)
SELECT (CategoryCode, CategoryValueCode, CategoryValue)
FROM `DBA`.`old_category_values`;
Ответ №5:
Вставить запрос, например:-
Insert into `tableName`(field1, field2, field3) values ('value1', 'value2', 'value3');
Ответ №6:
Вы получаете сообщение об ошибке «Нет первичного ключа», потому что вы не указали действительный уникальный первичный ключ.
В вашей таблице должно быть 4 столбца.
INSERT INTO t_category_values (PRIMARY_KEY, CategoryCode, CategoryValueCode, CategoryValue)
VALUES(pkey_value_here, 2, 1, 1);
Единственный раз, когда вам не нужно указывать столбец первичного ключа, — это когда первичный ключ представляет собой значение с автоматическим увеличением. Если это столбец с автоматическим увеличением, вставка автоматически заполнит это значение для вас, и вам не нужно беспокоиться об этом.