Ahmed AE Ответов: 1

Как вставить в таблицу mysql столбец, известный своим именем как string?


Я хочу вставить в таблицу MySQL (ребенок таблица) столбец определенное значение(int ценность). Я знаю, что имя столбца:
'parent_data_ID'
Но это имя столбца получается из следующей команды:
SELECT COLUMN_NAME
FROM
  information_schema.KEY_COLUMN_USAGE
WHERE
  REFERENCED_TABLE_NAME = 'parent'
  and 
  TABLE_NAME = 'child'
  AND REFERENCED_COLUMN_NAME = 'ID';


Что я уже пробовал:

Я попробовал следующую команду:
insert into `pharmacy_schema`.`employees`
(SELECT COLUMN_NAME
FROM
  information_schema.KEY_COLUMN_USAGE
WHERE
  REFERENCED_TABLE_NAME = 'persons_data'
  and 
  TABLE_NAME = 'employees'
  AND REFERENCED_COLUMN_NAME = 'ID')
  values('5');

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

Richard Deeming

Репост
Это тот же самый вопрос, который вы опубликовали на прошлой неделе:
https://www.codeproject.com/Questions/1277429/How-do-I-insert-a-value-using-select-statement-in[^]

Если вы хотите обновить свой вопрос, чтобы добавить дополнительную информацию, перейдите к исходному вопросу и нажмите зеленую ссылку "улучшить вопрос". НЕ опубликуйте свое обновление как новый вопрос.

1 Ответов

Рейтинг:
2

Dave Kreskowiak

AFAIK, вы не можете напрямую параметризовать имя столбца, как это:

INSERT INTO table (@columnName = @value)

в SQL.

Однако вы можете построить свой оператор SQL в коде приложения и просто поместить его имя в строку SQL - запроса. Тем не менее, вам лучше быть чертовски уверенным, что просто кто-то не может обмануть ваш код в создании SQL-оператора, который может уничтожить вашу базу данных. Это не совсем безопасный способ делать вещи с помощью воображения.

Вам было бы лучше использовать регистр в инструкции INSERT, чтобы каким-то образом использовать параметр columnname для выбора правильного имени столбца, хотя я не могу сказать, что это даже законно. У меня сейчас нет времени искать его или проверять.