Sql 如何使用带外键的anrom批量插入两个表
我在做这样的批处理操作时遇到了麻烦Sql 如何使用带外键的anrom批量插入两个表,sql,scala,playframework-2.3,anorm,Sql,Scala,Playframework 2.3,Anorm,我在做这样的批处理操作时遇到了麻烦 val params = Seq(Seq[NamedParameter]("valueA" -> 1, "valueB" -> 2)) BatchSql(SQL( """ INSERT INTO tableA ( valueA ) VALUES ( {valueA} ); INSERT INTO tableB ( tableAId, valueB ) VALUES ( LAST_INSERT_ID(), {valueB})
val params = Seq(Seq[NamedParameter]("valueA" -> 1, "valueB" -> 2))
BatchSql(SQL(
"""
INSERT INTO tableA ( valueA ) VALUES ( {valueA} );
INSERT INTO tableB ( tableAId, valueB ) VALUES ( LAST_INSERT_ID(), {valueB});
""".stripMargin), params).execute()
有这样的桌子
CREATE TABLE tableA
(
id int AUTO_INCREMENT PRIMARY KEY,
valueA int
);
CREATE TABLE tableB
(
id int AUTO_INCREMENT PRIMARY KEY
tableAId int,
valueA int,
FOREIGN KEY (tableAId) REFERENCES tableA (id),
);
我得到这个例外,只是抱怨第2行
BatchUpdateException: 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 'INSERT INTO tableB ( tableAid, valueA' at line 1]]
谢谢您需要两个表,第一个表生成主键,第二个表使用新创建的主键作为外键
create table TABLE_1 columns ID_TABLE_1 PK, A, B (UNIC), C;
create table TABLE_2 columns ID_TABLE_1 FK, D, E;
DECLARE @unicValue int = 987;
INSERT INTO TABLE_1 (A,B,C) VALUES ('A', @unicValue, 'C');
INSERT INTO TABLE_2 (ID_TABLE_1, D, E) VALUES (
(SELECT ID_TABLE_1 FROM TABLE_1 WHERE B = @unicValue), 'VALUE', 'C');
- 添加多个“批”
- 执行批处理李>