raw sql multi insert 取得 id


#1

just code

insert_length = 10

first_id = ActiveRecord::Base.connection.insert("INSERT INTO faqs (title , content , created_at , updated_at) VALUES #{([[rand,rand,'"2017-12-12"','"2017-12-12"']] * insert_length).map{|i|"(#{i.join(',')})"}.join(',')}")

last_id = first_id + insert_length - 1

單純丟 code 上來,這邊幾個解釋,如果 INSERT 在 transaction 內,而該 transaction 必須有額外的關聯要做 insert,則 id 必須回填,而上面的方式就可以很方便的取得 id range

RDBMS 是完整 transaction 的所以 insert 一定是連號,所以頭尾就可以估算回來了,另外 select 也行,以上