Как вставить значение в SQL где угодно?

#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");
  
  1. Вокруг имен таблиц не допускаются «двойные кавычки», обратные знаки. DBA это база данных, t_category_values это таблица.
  2. Назовите столбцы, которые вы хотите заполнить
  3. Добавьте ‘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);
  

Единственный раз, когда вам не нужно указывать столбец первичного ключа, — это когда первичный ключ представляет собой значение с автоматическим увеличением. Если это столбец с автоматическим увеличением, вставка автоматически заполнит это значение для вас, и вам не нужно беспокоиться об этом.