Не удается вставить в таблицу, потому что таблица уже существует? - PullRequest
12 голосов
/ 18 июня 2009

У меня есть таблица пользователей. Я хочу вставить данные в мою таблицу пользователей.

У меня есть заявление:

SELECT columna, columnb, 
INTO my_table 
FROM my_other_table
WHERE (... conditions ...)

Я получаю следующую ошибку:

SQL Server Error on (myserver) Error:2714 at Line:1 Message:There is already an object named 'my_table' in the database.

Да, спасибо, Sybase. Я знаю это. Я знаю, что таблица существует. Я хочу вставить в него данные.

Почему Sybase не играет хорошо? (

(Sybase - не моя сильная сторона, Oracle - это может быть просто проблема понимания или ее отсутствие. Этого никогда не произойдет в Oracle ...)

Ответы [ 4 ]

23 голосов
/ 18 июня 2009

SELECT ... INTO для создания новых таблиц.

Используйте INSERT ... SELECT для существующих таблиц. например:

INSERT INTO my_table 
SELECT columna, columnb, 
FROM my_other_table
WHERE (... conditions ...)
4 голосов
/ 18 июня 2009

Вы пробовали это так?

Insert INTO my_table
SELECT columna, columnb, 
FROM my_other_table
WHERE (... conditions ...)

Похоже, что он неявно пытается создать для вас новую таблицу с именем my_table.

1 голос
/ 18 июня 2009

Не уверен в SYBASE, но в DB2 это работает для меня


 INSERT INTO my_table
 (
      columna,
      columnb
 )
 SELECT
      columna,
      columnb
 FROM
      my_other_table
 WHERE
      (... conditions...)

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

0 голосов
/ 31 мая 2016

Используйте ключевое слово «существующий» после «в» для вставки в существующую таблицу.

SELECT [COLUMN LIST] INTO EXISTING [TABLE NAME]
...