sql >> データベース >  >> RDS >> PostgreSQL

Djangoオブジェクトの作成とPostgresシーケンス

    すべてが正常に動作します。 djangoのcreate()は、シーケンスの挿入とは直接関係ありません。簡単に:

    • postgresql自動インクリメント(「シリアル」タイプ)は、「シーケンスの作成+デフォルトとしてシーケンス値を使用した整数フィールドの作成」のショートカットです。
    • djangoの自動フィールド主キー(他に指定されていない場合はidinteger)は、シリアルフィールドを作成するだけです
    • IDを手動で指定すると、postgresはその値をデータベースに挿入します。値を指定すると、適切な動作である「デフォルト」パラメータが省略されます。

    したがって、挿入でシーケンスを選択した方法でインクリメントする場合は、SELECT setval('sequence_name'、int_value);を使用してシーケンス値を手動で変更する必要があります。それ以外の場合はnullのままにすると、自動的にインクリメントされます。現在の値を選択して+1インクリメントします(シーケンス定義で別の方法で指定されていない場合)。

    もう1つのアイデアは、オブジェクトを作成してからIDを更新し(もちろん、まだ使用することはできません)、最後にシーケンス値を最大IDに設定することです。



    1. エラー1049(42000):不明なデータベース'mydatabasename'

    2. 不正なハンドシェイクまたはECONNRESETAzureMysql Nodejs

    3. テーブルから履歴をチェックし、Mysqlでそれに応じてレコードをマークします

    4. トリガー:テーブルの値を別のテーブルの値で初期化するにはどうすればよいですか?