ホームページ > データベース > mysql チュートリアル > SQL テーブル内の複数の列にわたって一意性を強制するにはどうすればよいですか?

SQL テーブル内の複数の列にわたって一意性を強制するにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-24 23:47:09
オリジナル
448 人が閲覧しました

How to Enforce Uniqueness Across Multiple Columns in a SQL Table?

複数の列の一意性

質問声明

テーブルには、2つの既存のフィールドの組み合わせが必須であることを願っています。

solution

一意の制約またはインデックスの使用:

繰り返し記録を削除した後:

または

トリガーの代わりに使用:

<code class="language-sql">ALTER TABLE dbo.yourtablename ADD CONSTRAINT uq_yourtablename UNIQUE(column1, column2);</code>
ログイン後にコピー

異常を防ぎ、データベースでのユニークな試験に対処するために:

<code class="language-sql">CREATE UNIQUE INDEX uq_yourtablename ON dbo.yourtablename(column1, column2);</code>
ログイン後にコピー

問題で提供されているフィールド名を使用しましょう:

最後の挿入試行は、エラーを返して一意性を確保します。

<code class="language-sql">CREATE TRIGGER dbo.BlockDuplicatesYourTable ON dbo.YourTable INSTEAD OF INSERT AS
BEGIN
  SET NOCOUNT ON;

  IF NOT EXISTS (SELECT 1 FROM inserted AS i INNER JOIN dbo.YourTable AS t ON i.column1 = t.column1 AND i.column2 = t.column2)
  BEGIN
    INSERT dbo.YourTable(column1, column2, ...) SELECT column1, column2, ... FROM inserted;
  END
  ELSE
  BEGIN
    PRINT '未执行任何操作。'; -- 将错误信息改为更友好的提示
  END
END
GO</code>
ログイン後にコピー
この復活した出力は、元のテキストの技術的な正確さを維持しながら、より自然な言語を使用しています

以上がSQL テーブル内の複数の列にわたって一意性を強制するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート