Table of Contents
Under en medicinsk historia på några dagar har vissa användare avslöjat för oss att de har kommit fram till 1235 mysql trigger-felet.
Godkänd
g.Detta fel betyder att de redan har en AFTER INSERT-orsak för insamlingstabellen. SLIP TRIGGER vipInvite; DELIMITER $$ SKAPA TRIGGER vipInvite END $$ DELIMITER; Nu, om du har ett annat mål, behöver du kombinera koden från dessa två utlösare till en, ta sedan bort dubblettinnehåll från den befintliga utlösaren och sedan visa en ny stor.
g.
tv
Häromdagen fastnade jag i flera timmar tills det här problemet uppstod. Jag har använt triggers i SQL för år utan serverkrav, och ändå är MySQL-implementeringen ofta misstänkt.
Igår, när jag försökte återupprätta databasen, genererade jag fel 1235:
FEL 1235 (42000) vid mening 1408: Detta MySQL-alternativ löser fortfarande inte “flera triggers med samma åtgärd, tillräckligt med tid och konserter för bordet”
Jag grävde in på Google i ungefär en sekund och kom fram till att det här felet i slutresultatet kan visas om det finns ett stort antal orsaker. Jag förklarar också dessa mycket goda skäl för lösningarna nedan.
Skapat av alla på första plats, jag föreslår att du får en modern lista över alla triggers med följande kommando:
VÄLJ trigger_schema, trigger_nameFROM information_schema.triggersWHERE trigger_schema betyder 'NAME_OF_YOUR_DATABASE';
Orsak # 1: familjer kan inte kombinera FÖRE / EFTER samt INFOGA / UPPDATERA / DELETE
Den här PDF-filen beskriver det stora problemet. Problemet kan beskrivas en gång enkelt: BEFORE_INSERT kan inte också ha AFTER_INSERT på samma tabell. Du kan ha uppdaterat beställningen INNAN du registrerade den och därefter uppdaterat andra typer och design av infogningstabeller med ID. Jag föreslår att du flyttar något för att hjälpa dig denna logik (kanske INNAN du tror på utlösaren) i din kod.
Orsak # 2: AFTER_DELETE har ibland fel 1235
AFTER_DELETE-utlösare ska användas. Att byta till BEFORE_DELETE-utlösaren är vettigt när de flesta använder OLD-variabeln. Jag har ingen aning om varför detta kommer upp, det kan vara min specifika MySQL-version.
Orsak 3: Du har inte samma avgifter (dubbla utlösare)
Ibland, till exempel I lösningen, får du ett annat felvärde, men ibland får en person samma 1235-fel utan att ange orsak. Gå igenom showen startar diskussionen ovan och leta efter berättar med samma namn. Utförde alltid TRIGGER innan du skapade / modifierade en mycket trigger.
Orsak # 4: du kanske inte kan referera till EN TABELL som användare vanligtvis uppdaterar / infogar i en annan utlösare
Till exempel, om shoppare vill ställa in ditt eget förvalda användarlösenord baserat på ett slutresultat när de skapar ytterligare användarposter, kan du faktiskt prova följande: UPDATE folks SET password = “newPassword”;
Det korrekta sättet att göra detta är att ställa in en variabel i de flesta av BEFORE_INSERT-utlösaren. Exempel: INSTALLERA NYTT. motsvarar lösenord “newPassword”;
Orsak # idéer: När du exporterar en databas (som ett funktionellt SQL-skript), kan du få eshop-definitioner i ett skript
Med andra ord, om du exporterar en MySQL-databas via sökväg till en enda .File, kan den faktiska manuella filen sannolikt innehålla saker som TRIGGER “mittnamn” eller “trigger_name”. Så om du försöker lägga tillbaka det i databaserna med ett annat namn, kommer det också att misslyckas. Jag förväntade mig olika systemfel eftersom databasen INTE pekar på databasen som jag verkligen vill återställa. Hur som helst, vem som helst kommer också att få fel 1235 följande.
Kort lösning: öppna den .sql-filen och ändra alla referenser som kan EXPORTED_DB_NAME. ignorerar strängen (d.v.s. utbyter, har ingenting).
Resume / TL; DR:
Att inte använda BEFORE kontra UPDATE kan faktiskt resultera i samma funktion (som INSERT) på var och en av våra samma tabeller. Använd aldrig AFTER_DELETE stimulantia, använd before_delete istället. Undvik att skapa imiterade namn. Referera inte till den exakta familjetabellen som du ändrar eller infogar där du köper triggern, GAMMAL därtill NEW, utan använd SET på otvivelaktigt underfrågan istället. När du återställer en post från en säkerhetskopia nämns databasens explicita användarnamn när det gäller betalningen, som inte tillhandahåller säkerhetskopian (vid föryngring till ett annat lagringsnamn).
Kom ihåg: med create INSERT influence kan du bara använda en NEW variabel, med create UPDATE stimulate kan du använda OLD med NEW, och i DELETE-deklarationen kan personen hänvisar bara till oney ‘på OLD.
- Taggar:
- 1235
- efter
- after_delete
- före
- slå samman
- indexera
- definiera
- felmeddelande
- mysql
- webblänk < /li>,
- återställ
- samma varukorg
- lösningar
,
,
,
,
,
,
,
,
,
,
,
En annan dag stötte jag på det problemet i timmar. Jag har använt triggers i SQL i många fem till tio år. Utan en server är detta det bästa problemet, men implementeringen i MySQL är mycket tveksam.
Scenariot jag stötte på nyligen när jag föryngrade en samling är fel 1235:
ERROR 1235 (42000) endast på order 1408: den här versionen av MySQL har ännu inte stöd för “flera triggers på grund av samma varaktighet och enstaka workshop för ett bord”
Jag sökte på Google i ungefär den timmen och kom fram till att detta fel kan uppstå av flera anledningar. Jag förklarar dessa kaffesump och gör dem tillgängliga i du ser, lösningarna nedan.
Först och främst föreslår jag att du publicerar alla triggers genom att köra följande kommandon:
VÄLJ triggernamnFRÅN trigger_schema, information_schema.triggersWO trigger_schema matchar PDF "ditt_databasnamn";
detta beskriver detta problem. Det är enkelt att göra fel: du kan inte föreslå BEFORE_INSERT och AFTER_INSERT för en viss tabell. Du kan ha uppdaterat kolumnen INNAN du infogade den och som en följd av detta uppdaterade infogningen av en enda tabell med ID. Jag föreslår att en person flyttar en del av detta resonemang (möjligen INNAN utlösaren avfyras) till dessa koder. Följer
Du använder absolut inte AFTER_DELETE-utlösare. Logiken på marknaden för att hoppa till BEFORE_DELETE-utlösaren där eller när du använder en GAMLA variabel. Jag har ingen aning om varför detta händer igen, det kommer att vara min egen version av MySQL.
Orsak # 3: Du i en position har för närvarande utlösare med den faktiska adressen (dubblettutlösare)
Ibland får man en annan felregel, men ibland får man ett och samma 1235-fel utan förklaring. Kör en bra ny fråga för att se orsakerna som nämns ovan och hitta resultaten i, den viktigaste med exakt samma namn. Kör alltid TRIGGER innan du startar/ändrar en trigger.
Orsak # 4: du kan vanligtvis inte referera till SAMMA TABELL-ägare som de förstärker / infogar i varje tryck
Till exempel, om du vill ställa in ett standardlösenord för psturgeons räkning med en trigger när du skapar en helt ny fantastisk användarpost, kan du mycket väl försöka: UPPDATERA PC-användare SET innebär lösenord “newPassword”;
Det korrekta att göra detta är att behålla en variabel i BEFORE_INSERT-objekten. Exempel: STÄLL IN NYTT lösenord. = . € nytt Lösenordâ € œ;
Orsak # 5: när du exporterar en datakälla (till exempel ett mycket bra .SQL .script) du. burk. hämta .definier ..databas .i .script
I andra fraser och uttryck, trigger_name ‘. Därför, förutsatt att du försöker återställa den och återgå till en databas med en annan term, kommer den att krascha. Jag tänkte på en extra felkod för att bryta ut eftersom databasen den är nära INTE pekar på data jag återställer. Men du får normalt också fel 1235 för denna inställningsvy.
Snabbfix: öppna en .sql-fil och ersätt alla tidigare klienter till EXPORTED_DB_NAME. i fallet med ett mellanslag, en teckensträng (det vill säga ersätt ingenting).
Använd inte BEFORE / UPDATE-utlösare på ditt bord som en utgångsfunktion (som INSERT). Hjälp inte AFTER_DELETE-utlösare, inkludera before_delete istället. Kör inte dubbletter av namn. Istället för att adressera För exakt samma tabell som någon uppdaterar och infogar i en användningstrigger, i själva verket en specifik underfråga, se om du vill ha OLD och NEW med SET. Om du återställer en databas med en säkerhetskopia, se till att huvudsakligen av säkerhetskopian inte innehåller explicit information om tillverkaren som skapats av databasen (när du återställer till ett enormt annat klientbasnamn).
Kom ihåg att när du skapar en INSERT-utlösare kan alla ofta bara använda variabeln NEW, när du skapar en UPDATE-orsak bakom orsaken kan du använda OLD och så NEW, och i en DELETE-kick-off kan vi bara hänvisa till OLD.
Godkänd
ASR Pro-reparationsverktyget är lösningen för en Windows-dator som kör långsamt, har registerproblem eller är infekterad med skadlig programvara. Detta kraftfulla och lättanvända verktyg kan snabbt diagnostisera och fixa din dator, öka prestandan, optimera minnet och förbättra säkerheten i processen. Lider inte av en trög dator längre - prova ASR Pro idag!

Mjukvaran för att fixa din PC är bara ett klick bort - ladda ner den nu.
