1

テーブルにレコードを挿入する関数で、挿入された ID を取得したいと考えています。どのようにできるのか?新しいクエリを作成する必要がありますか?

        using (NpgsqlConnection conn = new NpgsqlConnection(ConfigurationManager.ConnectionStrings["AxWaveConnection"].ToString()))
        {

            conn.Open();
            NpgsqlTransaction transaction = conn.BeginTransaction();


            String query =
            "INSERT INTO Video (youtubeidvideo, title, rating, viewcount, duration, dataadded, errorflag, schedulingflag, schedulingdate, convertdate) " +
            "VALUES ('" + youtubeIdVideo + "','" + title + "'," + rating.ToString().Replace(',', '.') + "," + viewCount.ToString() +  "," +
            duration.ToString() + ", now(), false, false, null, null); ";

            NpgsqlCommand cmd = new NpgsqlCommand(query, conn, transaction);

            try
            {
                cmd.ExecuteNonQuery();


            }
            catch (Exception e)
            {
                scopeID = -1;        //Duplicate Record
            }

            transaction.Commit();
            conn.Close();
        }
4

1 に答える 1

4

これを試すことができますか:

SELECT CURRVAL(pg_get_serial_sequence('my_tbl_name','id_col_name'))

もちろん、テーブル名と列名を指定する必要があります。

これは現在のセッション/接続用です

http://www.postgresql.org/docs/8.3/static/functions-sequence.html

これも確認できます

INSERTステートメントの RETURNING 句を参照してください。基本的に、INSERT はクエリとしても機能し、挿入された値を返します。

于 2013-02-13T10:46:46.070 に答える