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

Djangoでテーブル/行ロックを実行する方法

    Djangoは、テーブルロックを実行するためのAPIを明示的に提供していません。私の経験では、適切に設計されたコードでテーブル全体をロックする必要はほとんどなく、ほとんどの同時実行性の問題は行レベルのロックで解決できます。これは最後の努力です。並行性を解決するのではなく、並行性の試みをすべて殺すだけです。

    テーブルレベルのロックが本当に必要な場合は、カーソルを使用して生のSQLステートメントを実行できます。

    from django.db import connection
    
    with connection.cursor() as cursor:
        cursor.execute("LOCK TABLES %s READ", [tablename])
        try:
            ...
        finally:
            cursor.execute("UNLOCK TABLES;")
    


    1. TODATETIMEOFFSET()SQLServerの例

    2. 重複キーエラーでのMySQLのロック

    3. Laravel / PHP:アルファベット順で番号順に並べる

    4. Hibernate OnDeleteカスケードはMySqlでは機能しませんが、postgresおよびMs-Sqlでは機能します