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

2つのフィールドに「両面」の一意のインデックスを作成するにはどうすればよいですか?

    常に最小の数値を最初の列に格納し、最大の数値を2番目の列に格納するように、テーブルに何を入れるかを制御するのはどうですか?もちろん、それが「同じこと」を意味する限り。データベースに到達する前にそれを行う方がおそらく安価です。

    これが不可能な場合は、フィールドをそのまま保存しますが、番号順に2つの他のフィールドに複製して、その上に主キー(擬似コードっぽい)を作成します:

    COLUMN A : 2
    COLUMN B : 1
    
    COLUMN A_PK : 1  ( if new.a < new.b then new.a else new.b )
    COLUMN B_PK : 2  ( if new.b > new.a then new.b else new.a )
    

    これは、トリガーを使用して(Ronaldの応答のように)簡単に実行することも、アプリケーションの上位で処理することもできます。



    1. MySQL複数の行を返すSELECTサブクエリを使用してテーブルにINSERTを実行するにはどうすればよいですか?

    2. 挿入...マージ...選択(SQL Server)

    3. グループ化によるMySQLの削除

    4. データベースの依存関係とは何ですか?