![](/img/trans.png)
[英]How to insert multiple rows from a data array in a Doctrine migration?
[英]Data migration script INSERT INTO
我创建了以下SQL代码来迁移我们的数据库。 UP查询工作正常,但是我不知道如何解决DOWN查询。 我只想插入payment_gateway表中的所有数据,但还必须匹配正确的reseller_shop.id。
// UP
INSERT INTO payment_gateway (`type`, account, keyIn, keyOut, resellerShopId)
SELECT 'paymentGatewayOgone', rs.ogoneAccount, rs.ogoneSignatureIn, rs.ogoneSignatureOut, rs.id
FROM reseller_shop AS rs
WHERE rs.ogoneAccount <> '';
// DOWN
INSERT INTO reseller_shop (ogoneAccount, ogoneSignatureIn, ogoneSignatureOut)
SELECT pg.account, pg.keyIn, pg.keyOut
FROM payment_gateway AS pg
WHERE pg.type = 'paymentGatewayOgone'
AND reseller_shop.id = pg.resellerShopId
似乎我必须使用UPDATE而不是INSERT INTO。
UPDATE reseller_shop AS rs, payment_gateway AS pg
SET rs.ogoneAccount = pg.account, rs.ogoneSignatureIn = pg.keyIn, rs.ogoneSignatureOut = pg.keyOut
WHERE pg.type = 'paymentGatewayOgone'
AND rs.id = pg.resellerShopId
INSERT INTO reseller_shop (ogoneAccount, ogoneSignatureIn, ogoneSignatureOut)
SELECT pg.account, pg.keyIn, pg.keyOut FROM payment_gateway AS pg
WHERE pg.type = 'paymentGatewayOgone' AND pg.resellerShopId in
(select reseller_shop.id from reseller_shop_id)
希望这可以帮助
像这样的东西:
INSERT INTO reseller_shop (ogoneAccount, ogoneSignatureIn, ogoneSignatureOut)
SELECT pg.account, pg.keyIn, pg.keyOut
FROM payment_gateway AS pg
INNER JOIN reseller_shop AS rs ON rs.id = pg.resellerShopId
WHERE pg.type = 'paymentGatewayOgone'
要么:
INSERT INTO reseller_shop (ogoneAccount, ogoneSignatureIn, ogoneSignatureOut)
SELECT pg.account, pg.keyIn, pg.keyOut
FROM payment_gateway AS pg
WHERE pg.type = 'paymentGatewayOgone'
AND EXISTS (SELECT *
FROM reseller_shop AS rs
WHERE rs.id = pg.resellerShopId)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.