2016-06-09 8 views
1

Ich beabsichtige, Softdelete für mein Laravel-Projekt zu verwenden, und ich frage mich, wie man Daten immer richtig stellt?Wie man Daten einschränkt, um richtige Daten im Softdelete zu behalten laravel

Mein Gedanke ist wie folgt: Um Soft Delete zu erstellen, muss ich die delete_at Spalte erstellen, um Soft Delete zu verwenden. Aber was passiert, wenn ich einen Datensatz genau den "gelöschten" Datensatz einfüge (außer dem Wert der Spalte delete_at)?

Wenn delete_at nicht im Primärschlüssel ist, dann kann ich keinen neuen Datensatz hinzufügen? Aber was, wenn ich delete_at in den Primärschlüssel lege? Ich denke, es ist eine schlechte Idee.

Wie kann ich dieses Problem lösen?

+0

deleted_at ist ein Zeitstempel, warum würde es sogar zu einem Primärschlüssel machen? Standardmäßig wird ein neuer Datensatz erstellt - vorausgesetzt, dass Felder in der SQL-Tabelle nicht eindeutig sind. –

+0

warum nicht inkrementierte id verwenden? obwohl Sie in Ihrem Modell einen Primärschlüssel angeben müssen, um ihn als eine eindeutige Zeile zu betrachten. Wenn Sie einen Zeitstempel als Primärschlüssel erstellen, ist die Eindeutigkeit nicht sichergestellt, und wie Sie wissen, darf der Primärschlüssel keine Nullwerte enthalten – ClearBoth

Antwort

0

Im Fall von Soft-Löschungen verwendet man fast immer automatisch inkrementierte Ganzzahl-Primärschlüssel, um durch Neueinfügung verursachte Zwangsbedingungsverletzungen zu vermeiden.