Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk batch memasukkan id yang dimasukkan dalam mysql

Saya cuba mendapatkan insertid selepas memasukkan berbilang baris dalam jadual mysql menggunakan pertanyaan ini

insert into sometable (id , candidateid , createdby)
    values ('61','3175','1425'),('60','3175','1425'),('42','3175','1425'),('61','3176','1425'),('60','3176','1425'),('42','3176','1425') OUTPUT INSERTED.id

Tetapi saya mendapat ralat sintaks sql

code: 'ER_PARSE_ERROR',
  errno: 1064,
  sqlMessage: "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OUTPUT INSERTED.id' at line 2",
  sqlState: '42000',

Bagaimana untuk mendapatkan ID masukkan

P粉738248522P粉738248522177 hari yang lalu444

membalas semua(1)saya akan balas

  • P粉614840363

    P粉6148403632024-03-27 00:53:20

    OUTPUT INSERTED Sintaks ialah Microsoft SQL Server perkara. MySQL tidak menyokong sintaks ini.

    Dalam contoh anda, anda telah menetapkan nilai id secara eksplisit, jadi tidak perlu mengembalikannya. Hanya dapatkannya daripada nilai anda sendiri, yang jelas anda sudah tahu sebelum melakukan sisipan.

    Anda mungkin bergantung pada ID kenaikan automatik yang dijana semasa sisipan.

    Untuk mendapatkan ID kenaikan automatik bagi baris yang paling baru dimasukkan, gunakan fungsi LAST_INSERT_ID() dalam pertanyaan berasingan selepas INSERT.

    LAST_INSERT_ID() hanya mengembalikan ID first yang dijana semasa pemasukan. Jika anda melakukan sisipan berbilang baris, terpulang kepada anda untuk membuat kesimpulan id berikutnya. Ia biasanya nilai berterusan. Sebagai contoh, pemacu MySQL JDBC bergantung padanya sebagai nilai berturut-turut supaya ia boleh mengembalikan set id selepas sisipan pukal.

    Walau bagaimanapun, jika anda menukar innodb_autoinc_lock_mode=2 mereka tidak dijamin sebagai nilai berturut-turut, ia memperuntukkan nilai auto-inc dalam cara "berjalin", jadi sisipan serentak mungkin mendapat nilai daripada jujukan antara set yang dihasilkan oleh sisipan berbilang baris . Ini bukan mod lalai, jadi anda boleh menetapkannya dengan sengaja.

    balas
    0
  • Batalbalas