0

クエリを実行するときに、一度だけ収まるようにしたい

INSERT INTO SERVICEPAYANT ( TYPE_FLUX, DELAI ) VALUES (160,'9999');
INSERT INTO SERVICEPAYANT ( TYPE_FLUX, DELAI ) VALUES (161,'9999');
INSERT INTO SERVICEPAYANT ( TYPE_FLUX, DELAI ) VALUES (162,'9999');
INSERT INTO SERVICEPAYANT ( TYPE_FLUX, DELAI ) VALUES (163,'9999');
4

3 に答える 3

1

両方の列の組み合わせがあなたの自然キーだと思いますか? その場合、一意性制約が必要です。これは、データベースの実装によって異なります。

于 2012-05-29T14:43:44.443 に答える
1

列にマークを付けるか、テーブル内の他の列に既に があるかのようにする必要がありTYPE_FLUXますDELAI。これにより、列agin に入力するとエラーが発生するか、列に再度入力するとエラーが発生します。UNIQUE KEYPRIMARY KEY161TYPE_FLUX'9999'DELAI

2 つの列の組み合わせを一意にする場合は、組み合わせを作成します。UNIQUE KEYこれは161 and '9999'、テーブルに再び入力されることはありません。

于 2012-05-29T14:43:56.923 に答える
0
INSERT INTO SERVICEPAYANT 
            (TYPE_FLUX, 
             DELAI) 
SELECT 161, 
       '9999' 
FROM   dual  
WHERE  NOT EXISTS (SELECT 1 
                   FROM   SERVICEPAYANT 
                   WHERE  TYPE_FLUX = 161 
                          AND DELAI = '9999') 
于 2012-05-29T14:42:20.237 に答える