Insert
Bob を使用した MySQL の INSERT クエリの例を示します。
基本的な INSERT
INSERT INTO users (name, email) VALUES (?, ?)
mysql.Insert("users").
Columns("name", "email").
Values(mysql.Arg("John Doe"), mysql.Arg("john@example.com"))
複数行の INSERT
INSERT INTO users (name, email) VALUES
(?, ?),
(?, ?)
mysql.Insert("users").
Columns("name", "email").
Values(mysql.Arg("John Doe"), mysql.Arg("john@example.com")).
Values(mysql.Arg("Jane Smith"), mysql.Arg("jane@example.com"))
INSERT IGNORE
INSERT IGNORE INTO users (name, email) VALUES (?, ?)
mysql.Insert("users").
Ignore().
Columns("name", "email").
Values(mysql.Arg("John Doe"), mysql.Arg("john@example.com"))
ON DUPLICATE KEY UPDATE
INSERT INTO users (id, name, email) VALUES (?, ?, ?)
ON DUPLICATE KEY UPDATE
name = VALUES(name),
email = VALUES(email)
mysql.Insert("users").
Columns("id", "name", "email").
Values(mysql.Arg(1), mysql.Arg("John Doe"), mysql.Arg("john@example.com")).
OnDuplicateKeyUpdate().
Set("name", mysql.F("VALUES", mysql.Quote("name"))).
Set("email", mysql.F("VALUES", mysql.Quote("email")))
INSERT SELECT
INSERT INTO backup_users (name, email)
SELECT name, email FROM users WHERE active = ?
selectQuery := mysql.Select("name", "email").
From("users").
Where(mysql.Quote("active").EQ(mysql.Arg(true)))
mysql.Insert("backup_users").
Columns("name", "email").
Query(selectQuery)
REPLACE INTO
REPLACE INTO users (id, name, email) VALUES (?, ?, ?)
mysql.Replace("users").
Columns("id", "name", "email").
Values(mysql.Arg(1), mysql.Arg("John Doe"), mysql.Arg("john@example.com"))
JSON データの INSERT
INSERT INTO users (name, metadata) VALUES (?, ?)
metadata := map[string]interface{}{
"age": 30,
"city": "Tokyo",
}
metadataJSON, _ := json.Marshal(metadata)
mysql.Insert("users").
Columns("name", "metadata").
Values(mysql.Arg("John Doe"), mysql.Arg(string(metadataJSON)))
これらの例は、Bob を使用して MySQL で実行可能な様々な INSERT クエリパターンを示しています。