Wie läuft das am besten ab? Kann ich etwas in die Migrationen einbringen? Danke im Voraus.Festlegen des Anfangswerts für den Primärschlüssel in Rails (d. H. Die ID des ersten Objekts ist 1000 anstelle von 1)
Antwort
Dies ist datenbankspezifisch. Tun Sie einfach so etwas wie die folgenden in der Migration:
class MyMigration < ActiveRecord::Migration
def self.up
create_table :my_table do |t|
# ...
end
execute "ALTER TABLE my_table AUTO_INCREMENT = 1000" # for MySQL
end
def self.down
# ...
end
end
Oder in der Tat, noch besser, wie Bane vorgeschlagen:
def self.up
create_table :my_table, :options => "AUTO_INCREMENT = 1000" do |t|
# ...
end
end
Seien Sie vorsichtig mit Datenbank-spezifischen Migrationen, aber! Die Verwendung von SQL, das spezifisch für Ihre Datenbank ist, wird die Kompatibilität mit anderen Datenbanken beeinträchtigen und ist im Allgemeinen keine gute Idee.
Jede Zeichenfolge, die an die Option ": options" übergeben wird, wird an das Ende der SQL-Anweisung angehängt, die die Tabelle erstellt. Beste Übung.
def self.up
create_table :my_table, :options => "AUTO_INCREMENT = 1000" do |t|
# ...
end
end
Es funktioniert nicht auf SQLite & SQL Server – yossico
- 1. Django-Formular: Festlegen des Anfangswerts für DateField
- 2. json_decode gibt den Stringtyp anstelle des Objekts
- 3. Festlegen des Anfangswerts einer Eigenschaft bei Verwendung von DataContractSerializer
- 4. angular-ui typeahead Wählen Sie die ID anstelle des Objekts
- 5. In RoR, wie bekomme ich den Namen/die ID meines Objekts in meinem Auswahlmenü anstelle des Objekts selbst zu rendern?
- 6. glRotatef dreht die Kamera anstelle des Objekts
- 7. TextBoxFür die Anzeige des Anfangswerts, nicht den vom Code
- 8. Symfony2: Erhalte die ID des persistenten Objekts
- 9. Rückgabe-ID des HTML-Objekts
- 10. Aktualisieren des Objekts mit Primärschlüssel funktioniert nicht
- 11. Warum Hashmapp-Lookup ist O (1), d. H. Konstante Zeit?
- 12. MVC Get ID des Objekts
- 13. Teilweise Aktualisierung des Objekts
- 14. Javascript Setter für den Wert des Objekts
- 15. Rails: Die Auswahl eines Datensatzes in einem Objekt, da die ID des Objekts
- 16. JSON.stringify gibt "[object Object]" anstelle des Inhalts des Objekts
- 17. Django. Erhalte die ID des ForeignKey-Objekts in CreateView
- 18. Anzeigen von Benutzerrollen zeigt die Rollen-ID anstelle des Rollennamens
- 19. Was ist Squeryl-Syntax für den Ausschluss (d. H.! =)?
- 20. Laravel 5.2 - Primärschlüssel für E-Mail anstelle von 'ID' setzen
- 21. Ich brauche die Post-ID für den ersten Beitrag des aktuellen Benutzers in Wordpress
- 22. NSDate für den ersten Tag des Monats
- 23. Übergabe des gesamten Objekts gegen die Eigenschaft des Objekts
- 24. Festlegen des Anfangsverzeichnisses für NSOpenPanel
- 25. Warum ist dieser lange Überlauf auf -1, anstelle des Mindestwerts für den Typ?
- 26. Verwenden wir Rails ActiveRecord als Hybridstruktur, d. H. Datenstruktur + Objekt?
- 27. Retrofit bekommt nicht die ID des JSON-Objekts
- 28. Wie wird ein Primärschlüssel von 1000 gestartet?
- 29. Array des Objekts als String zu Array des Objekts (jSON)?
- 30. Entity Framework - ID des neuen Objekts manuell setzen
Migrationen sollten datenbankunabhängig sein. Was ist, wenn die Datenbank, auf der Sie die Migration durchführen, diese Option nicht unterstützt? Die Ausführung wird wahrscheinlich eine Ausnahme auslösen. Ich würde stattdessen den Befehl direkt in der Datenbank ausführen. BTW, ich stimme der Lösung zu. –
@weppos, wenn Sie es direkt in einer Datenbank ausführen, werden Sie den Vorteil von Migrationen verlieren, mit denen Sie Ihr Datenbankschema problemlos auf andere Server portieren können. Natürlich wird der andere große Vorteil, die Portierung auf eine Datenbank von einem anderen Anbieter, ungültig sein. – molf
Hallo Molf, du verpasst ein Doppelzitat vor AUTO_INCREMENT. –