【问题标题】:Cannot insert into table because the table already exists?无法插入表,因为表已经存在?
【发布时间】:2010-11-03 20:36:31
【问题描述】:

我有一个用户表。我想将数据插入到我的用户表中。

我有一个声明:

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 中永远不会发生......)

【问题讨论】:

  • 你这样做的方式意味着表的创建

标签: sybase


【解决方案1】:

SELECT ... INTO 用于创建新表。

对现有表使用 INSERT ... SELECT。例如:

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

【讨论】:

  • 哦,我明白了...知道这很有趣。从来不知道你可以在 Sybase 中做到这一点。干杯,彼得。
【解决方案2】:

你试过这种方式吗?

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

它似乎正在尝试为您隐式创建一个名为 my_table 的新表。

【讨论】:

    【解决方案3】:

    不确定 SYBASE,但在 DB2 中这对我有用

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

    我认为在插入语句中指定列比假设它们与选择的顺序相同更安全。

    【讨论】:

      【解决方案4】:

      在“into”之后使用“existing”关键字插入现有表。

      SELECT [COLUMN LIST] INTO EXISTING [TABLE NAME]
      

      【讨论】:

        猜你喜欢
        • 2014-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-12
        • 1970-01-01
        • 2013-06-25
        • 2013-06-29
        相关资源
        最近更新 更多