2011-07-13 17 views
0

テーブルに新しいmysqlカラムを追加しようとしています。別のテーブルの挿入からinsert_idを使用しています。これは、私が使用する文である...MySqlがlast_insert_id()でカラム名を追加しています

string sqlInsert = "INSERT INTO test (IdPico, Nombre, TextoBienvenida, FechaCreacion) VALUES (1, 'nombretest', 'aslkñdfa lsñdk asjd asldkf añlsj f', '2011-07-13 10:22:53'); "; 
sqlInsert += "SET @IDTESTCREATED := CONCAT('Test', LAST_INSERT_ID(); "; 
sqlInsert += "ALTER TABLE Usuarios ADD COLUMN @IDTESTCREATED BIT DEFAULT 0; "; 

私はASP.NET 4.0とMySQLの接続を使用して、サーバはコマンド実行中に発生した「致命的なエラーで応答します。 '

誰かが私を助けることができますか?

+2

CONCAT関数の最後に他に何もない場合) – koressak

+4

これは壊れたデザインのようです。 *非常に*壊れた – wonk0

+1

@ wonk0ええ、この1つで失敗は強いです – sfussenegger

答えて

1

まあ...私は自分自身に答える。

深い検索を行った後、mysqlの変数で列を動的に追加する方法が見つかりませんでした。

最後に、テストを挿入してIDを取得し、次にユーザーテーブルを更新する2つのクエリを作成しなければなりませんでした。

idの挿入と取得が同じクエリ内にあるため、永続的接続と同時更新の問題はありません。

string sqlInsert = "INSERT INTO Test (<fields>) VALUES (<values>);"; 
    sqlInsert += "SELECT LAST_INSERT_ID() AS IdTestInserted; "; 
string idnewtest = <result of insert query>; 
string sqlAlter = "ALTER TABLE Users ADD COLUMN Test" + idnewtest + " BIT DEFAULT 0; "; 

私は答えを見つけていないのですが、少なくとも私は目標を達成しました。 ご協力いただきありがとうございます。

+2

私は、人々があまりにも欠陥があると思われるものに手を差し伸べることに消極的だと思います。親指のルール:リレーショナルデータベースアプリケーションがそれ自身のテーブルを定期的に変更する必要がある場合、何か問題があります。 – Mchl

関連する問題