2016-08-04 4 views
0

私は私のSQLコードを使用していくつかの助けが必要です挿入を選択し、自動インクリメントバグ

insert into '.$type.' select * from ' .$type.' where effective_id = '.$id

をしかし、私はこのコードでエラーが発生します。

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '3' for key 'PRIMARY' (SQL: insert into actionplan select * from actionplan where effective_id = 3) 

アイデア列をスキップする方法はありますか?私はいくつかのテーブルでこのコードを使用する必要があります。だから私はすべての列を書くことはできません。

+1

これは、特定のSQによって異なりますどのようなDBMS? L製品。 – RBarryYoung

+1

エラーメッセージに基づいて 'mysql'タグを追加しました –

答えて

1

あなたは基本的にどのように私はselect *を使用しますが、列のいずれかを排除するものではない」求めている? `

申し訳ありませんが、それはどのようなselect *手段ではないのです。それはすべて列を得ることを意味します。には構文はありませんselect *-except-for-idためのSQL。

使用すると、1つを除くすべての列をしたい場合は、あなたが欲しいんすべての列をスペルアウトしなければなりません。

$sql = "insert into $type (id, col1, col2, col3) 
    select NULL, col1, col2, col3 from $type where effective_id = $id"; 
関連する問題