Ik probeer een tabel bij te werken met de volgende query
update at_product A join
(
SELECT atbillfields.billeditemguid,count(*) AS numberOfPeopleBought
,sum(atbillfields.billeditemqty) AS soldquantity
FROM jtbillingtest.at_salesbill atsalesbill
JOIN jtbillingtest.at_billfields atbillfields
ON atsalesbill.billbatchguid=atbillfields.billbatchguid
WHERE atsalesbill.billcreationdate BETWEEN '2013-09-09' AND date_add('2013-09-09', INTERVAL 1 DAY)
GROUP BY atbillfields.billeditemguid) B ON B.billeditemguid = A.productguid
SET A.productQuantity = A.productQuantity - B.soldquantity
Maar krijg de volgende uitzondering:
Foutcode: 1175. U gebruikt de veilige update-modus en u heeft geprobeerd om:
update een tabel zonder een WHERE die een KEY-kolom gebruikt Om veilig uit te schakelen
modus, schakel de optie in Voorkeuren -> SQL-query’s en opnieuw verbinding maken.
Toen ik een where
-clausule opgaf met de update, zoals A.productQuantity = 1
, werd dat specifiek bijgewerkt.
Kan iemand mij uitleggen waarom ik de query niet kan uitvoeren en hoe ik het probleem kan oplossen?
Antwoord 1, autoriteit 100%
Bekijk:
Als je wilt updaten zonder een waar-sleutel, moet je
. uitvoeren
SET SQL_SAFE_UPDATES=0;
vlak voor je vraag.
Een andere optie is om uw zoekopdracht te herschrijven en een sleutel op te nemen.
Antwoord 2, autoriteit 19%
Deze fout betekent dat u in de veilige update-modus werkt en dat u daarom twee opties heeft:
- u moet een waar-clausule opgeven die een index bevat om de update te laten slagen of
- Je kunt deze functie uitschakelen door
SET SQL_SAFE_UPDATES = 0;
te doen
Antwoord 3, autoriteit 12%
U kunt MysqlWorkbench uitproberen
Ga naar Bewerken –> Voorkeuren
Klik op het tabblad “SQL Editor” en schakel het selectievakje “Veilige updates” uit
Vraag –> Maak opnieuw verbinding met de server (uitloggen en vervolgens inloggen)
Ik hoop dat het nuttig voor je is.
Antwoord 4, autoriteit 9%
In MySQL 5.5
, als u MySQL Workbench
gebruikt, dan
- Ga naar
Edit
–>Preferences
- Klik op het tabblad
"SQL Queries"
en schakel het selectievakje"Safe Updates"
uit. Query
–>Maak opnieuw verbinding met de server (logout
en danlogin
)
Dit werkt.
Antwoord 5
In mijn geval schakel ik het controleren van de externe-sleutel uit met dit Mysql-commando:
SET FOREIGN_KEY_CHECKS=0;