title: MySQL: Add constraint if not exists
body: <p>In my create script for my database create script looking something like this:</p>
  
  <pre><code>CREATE TABLE IF NOT EXISTS `rabbits`
  (
      `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
      `name` VARCHAR(255) NOT NULL,
      `main_page_id` INT UNSIGNED COMMENT 'What page is the main one',
      PRIMARY KEY (`id`),
      KEY `main_page_id` (`main_page_id`)
  )
  ENGINE=InnoDB;
  
  CREATE TABLE IF NOT EXISTS `rabbit_pages`
  (
      `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
      `rabbit_id` INT UNSIGNED NOT NULL,
      `title` VARCHAR(255) NOT NULL,
      `content` TEXT NOT NULL,
      PRIMARY KEY (`id`),
      KEY `rabbit_id` (`rabbit_id`),
      CONSTRAINT `fk_rabbits_pages` FOREIGN KEY (`rabbit_id`) REFERENCES `rabbits` (`id`)
  )
  ENGINE=InnoDB;
  
  ALTER TABLE `rabbits`
      ADD CONSTRAINT `fk_rabbits_main_page` FOREIGN KEY (`main_page_id`) REFERENCES `rabbit_pages` (`id`);
  </code></pre>
  
  <p>This runs fine the first time, but if I run it again it fails on the last line there with "Duplicate key on write or update".</p>
  
  <p>Is there a way I can do sort of a <code>ADD CONSTRAINT IF NOT EXISTS</code> or something like that? Like I can do with the <code>CREATE TABLE</code> query?</p>