MySQL 5.6 リファレンスマニュアル  /  ...  /  PRIMARY KEY および UNIQUE インデックス制約

1.8.3.1 PRIMARY KEY および UNIQUE インデックス制約

通常、データ変更ステートメント (INSERTUPDATE など) がプライマリキー、一意キー、または外部キーの制約に違反すると、エラーが発生します。InnoDB などのトランザクションストレージエンジンを使用している場合、MySQL ではステートメントが自動的にロールバックされます。非トランザクションストレージエンジンを使用している場合、MySQL は、エラーが発生した行でステートメントの処理を停止し、残りの行を未処理のままにしておきます。

MySQL では、INSERTUPDATE などに対して IGNORE キーワードをサポートします。これを使用する場合は、MySQL は、プライマリキーまたは一意キーの違反を無視し、次の行を処理し続けます。使用しているステートメントに関するセクション (セクション13.2.5「INSERT 構文」セクション13.2.11「UPDATE 構文」など) を参照してください。

mysql_info() C API 関数で、実際に挿入または更新される行数についての情報を取得できます。SHOW WARNINGS ステートメントを使用することもできます。セクション23.8.7.35「mysql_info()」およびセクション13.7.5.41「SHOW WARNINGS 構文」を参照してください。

現時点では、外部キーがサポートされているのは InnoDB テーブルのみです。セクション14.6.6「InnoDB と FOREIGN KEY 制約」を参照してください。


User Comments
  Posted by hamy t on January 4, 2009
Quick Example of ignoring a unique key

Here is our table:
CREATE TABLE `file_names` (
`id` int(11) NOT NULL auto_increment,
`file_name` text NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `file_name` (`file_name`(200))
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

Here is our query
INSERT IGNORE INTO `its_streamingdata`.`file_names` (`id` ,
`file_name`) VALUES (NULL , 'a'), (NULL , 'a')

The table now contains one row with a filename of 'a'

HTH
Hamy
  Posted by DBA Lead on February 21, 2012
Sign Up Login You must be logged in to post a comment.