實務上雖然大部分都使用 Knew 組合 SQL 或單一 Raw SQL Statement,但有時候可能得同時使用多個 Statement,在 Knex 也沒問題。
Version
MySQL 8.0.18
Knex 0.20.2
SQL
INSERT INTO books (title, price, categoryId)
VALUES ('Haskell', 100, 4);
UPDATE books
SET categoryId = 5
WHERE title = 'Haskell'
若想同時執行兩個 SQL statement,必須在 statement 之後加上 ;
分隔。
Knex
import knex from 'knex'
let mySQL = knex ({
client: 'mysql',
connection: {
host : 'localhost',
port: 3306,
user : 'root',
password : 'demo',
database : 'Bookshelf',
multipleStatements: true
}
})
let sql = `
INSERT INTO books (title, price, categoryId)
VALUES ('Haskell', 100, 4);
UPDATE books
SET categoryId = 5
WHERE title = 'Haskell'
`
mySQL.raw(sql).then(console.log)
11 行
multipleStatements: true
建立 connection
時,必須加上 multipleStatements: true
。
15 行
let sql = `
INSERT INTO books (title, price, categoryId)
VALUES ('Haskell', 100, 4);
UPDATE books
SET categoryId = 5
WHERE title = 'Haskell'
`
一樣每個 SQL statement 尾巴要加上 ;
。
Conclusion
- Knex 也能同時執行多個 raw SQL,別忘了在建立 connection 時加上
multipleStatements: true