Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да променя референтното действие на външния ключ? (поведение)

Стар въпрос, но добавяне на отговор, за да може човек да получи помощ

Процесът му в две стъпки:

Да предположим, че table1 има външен ключ с име на колона fk_table2_id , с ограничение име fk_name и table2 е посочена таблица с ключ t2 (нещо като по-долу в моята диаграма ).

   table1 [ fk_table2_id ] --> table2 [t2]

Първа стъпка , ОТПУСКАТЕ старото ОГРАНИЧЕНИЕ:(справка )

ALTER TABLE `table1` 
DROP FOREIGN KEY `fk_name`;  

ограничението за известие е изтрито, колоната не е изтрита

Втора стъпка , ДОБАВЯНЕ НА НОВО ОГРАНИЧЕНИЕ:

ALTER TABLE `table1`  
ADD CONSTRAINT `fk_name` 
    FOREIGN KEY (`fk_table2_id`) REFERENCES `table2` (`t2`) ON DELETE CASCADE;  

добавяне на ограничение, колоната вече е там

Пример:

Имам UserDetails таблицата се отнася до Users таблица:

mysql> SHOW CREATE TABLE UserDetails;
:
:
 `User_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`Detail_id`),
  KEY `FK_User_id` (`User_id`),
  CONSTRAINT `FK_User_id` FOREIGN KEY (`User_id`) REFERENCES `Users` (`User_id`)
:
:

Първа стъпка:

mysql> ALTER TABLE `UserDetails` DROP FOREIGN KEY `FK_User_id`;
Query OK, 1 row affected (0.07 sec)  

Втора стъпка:

mysql> ALTER TABLE `UserDetails` ADD CONSTRAINT `FK_User_id` 
    -> FOREIGN KEY (`User_id`) REFERENCES `Users` (`User_id`) ON DELETE CASCADE;
Query OK, 1 row affected (0.02 sec)  

резултат:

mysql> SHOW CREATE TABLE UserDetails;
:
:
`User_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`Detail_id`),
  KEY `FK_User_id` (`User_id`),
  CONSTRAINT `FK_User_id` FOREIGN KEY (`User_id`) REFERENCES 
                                       `Users` (`User_id`) ON DELETE CASCADE
:


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Codeigniter транзакции

  2. MySQL Добавяне на външен ключ

  3. Как да създадете блог в PHP и MySQL база данни - Admin Posts

  4. MySQL пропуска първите 10 резултата

  5. Внедряване на релационни бази данни на MySQL в Ubuntu 12.04 (Precise Pangolin)