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

djangoでdb整合性制約を一時的に無効にするにはどうすればよいですか-postgresql

    解決策を得ました。

    外部キー制約チェックを停止するには、テーブルのトリガーを無効にする必要がありました。

    トリガーを無効にする

    def disable_triggers(self):
        with connection.cursor() as cursor:
            cursor.execute('ALTER TABLE "Table Name" DISABLE TRIGGER ALL;')
    

    トリガーを有効にする

    def enable_triggers(self):
        with connection.cursor() as cursor:
            cursor.execute('ALTER TABLE "Table Name" ENABLE TRIGGER ALL;')
    

    重要な注意事項

    • このドキュメントリンク によると 、execute()の2番目の引数としてリストを渡すことができます メソッド(例:テーブル名を動的に渡したい場合)が、これにより変数が自動的にエスケープされ、構文的に間違ったPostgreSQLクエリが形成される可能性があります(修正に多くの時間がかかりました)

    • トリガーを正しくオンに戻すようにしてください

    • 権限拒否エラーが発生した場合 次に、DBユーザーのアクセス許可を確認することをお勧めします。PgAdminからスーパーユーザーのアクセス許可をオンにしました。これで問題ありませんでした。そしてすべてが仕事に戻ります。 方法は?



    1. PHPでSQLクエリの実行を停止するにはどうすればよいですか?

    2. SQL Server(T-SQL)のデータベースメールプロファイルへのmsdbユーザーアクセスを許可する

    3. mysqlデータを逆ソートする方法

    4. SQLiteサンプルデータベース