簡體   English   中英

mysqldump 不保持 ON UPDATE RESTRICT

[英]mysqldump does not keep ON UPDATE RESTRICT

我有以下創建表查詢:

`CREATE TABLE `order_meta` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `order_id` int(11) DEFAULT NULL,
  `meta_key` varchar(255) DEFAULT NULL,
  `meta_value` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `order_meta_key_index` (`order_id`,`meta_key`),
  CONSTRAINT `order_meta_order_id` FOREIGN KEY (`order_id`) REFERENCES `orders` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT
) ENGINE=InnoDB AUTO_INCREMENT=34064 DEFAULT CHARSET=utf8;`

當我運行導出/mysqldump 時,它給了我。 運行SHOW CREATE TABLE order_meta給了我同樣的結果,所以我想這就是問題所在。

`CREATE TABLE `order_meta` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `order_id` int(11) DEFAULT NULL,
  `meta_key` varchar(255) DEFAULT NULL,
  `meta_value` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `order_meta_key_index` (`order_id`,`meta_key`),
  CONSTRAINT `order_meta_order_id` FOREIGN KEY (`order_id`) REFERENCES `orders` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=34064 DEFAULT CHARSET=utf8;`

請注意已刪除的“ON UPDATE RESTRICT”。 當我從“訂單”中刪除一行后,“order_meta”中的行不會被刪除。 當我刪除外鍵並使用更新重新添加時,它再次工作。 這是預期的行為還是我在這里遺漏了什么?

`alter table order_meta drop FOREIGN KEY `order_meta_order_id`;`

`alter table order_meta add CONSTRAINT `order_meta_order_id` FOREIGN KEY (`order_id`) REFERENCES `orders` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT;`

我想這與創建 mysqldump 的過時工作台有關。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM