- Verschifft
- 11. August 2026 um 18:10 UTC
- Autor
- Kamo
- Ausschuss
- b458e58
Drei Läufer: BillingGroupRosterMigration erstellt billing_pay_group_members, die eine Gruppe bedeutet, dafür zu bezahlen, bevor es etwas gekauft hat. org_id ist darauf denormalisiert so kann die Datenbank durchsetzen "ein Mitglied ist auf höchstens eine aktive Abrechnungsgruppe pro Organisation" als teilweise unique. Zwei Gruppen, die für eine Person zahlen, sind zwei Gebühren für einen Sitz, und nichts anderes im Schema würde es fangen: Die Einzigartigkeit von Abonnements sind pro Abonnement und AccountLicense hat keine. **************** fügt billing_group_uid zu account_subscriptions hinzu und ersetzt die dreispaltige Unikat mit zwei Teil-Unikaten. Verbreitet es auf vier Spalten würden nicht funktionieren - NULLs sind in einem einzigartigen Index hier deutlich, so Jede gruppenunabhängige Reihe würde aufhören, eingeschränkt zu werden. BillingPayGroupsMigration fügt market_id, seat_limit und Status und Noten hinzu bestehende Gruppen LEGACY. Diese wurden auf jedes Konto uid die Anfrage in Rechnung gestellt Körper getragen, und die Konsole schickte die Organisation, so dass ihr Konto_uid ist fast sicher falsch. Es gibt keinen sicheren Weg zu erraten, welche Karte gemeint war, und Erraten falsche Rechnungen die falsche Person, so dass sie an der Ladung Punkt verweigert werden statt repariert. Der erste Lauf zeigte, warum der Retry zählt: Beide Ersatzindizes scheiterten an 40001 konnte den Zugang nicht serialisieren, der Läufer loggte "gesprungen" und weiter, und die DROP der alten Beschränkung dann gelungen - Konto_Abonnements verlassen ohne Einzigartigkeit, was streng schlimmer ist als die Kollision, die dies repariert. DDL-Ankündigungen versuchen Sie jetzt auf Serialisierungsfehler, und der Tropfen wird übersprungen ausschließlich, sofern beide Ersatzstoffe nicht bestätigt sind.