首先是测试环境了。我的是phpmyadmin version 4.4.14版本。
测试的创建两个表,一个记录主要数据,一个记录扩展数据。
表结构式:-- phpMyAdmin SQL Dump
-- version 4.4.14
-- http://www.phpmyadmin.net
--
-- Host: 127.0.0.1
-- Generation Time: 2015-09-10 10:10:25
-- 服务器版本: 5.6.26
-- PHP Version: 5.6.12
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
--
-- Database: `one`
--
-- --------------------------------------------------------
--
-- 表的结构 `roottb`
--
CREATE TABLE IF NOT EXISTS `roottb` (
`id` int(11) unsigned NOT NULL,
`data` varchar(128) NOT NULL DEFAULT ''
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
--
-- 转存表中的数据 `roottb`
--
INSERT INTO `roottb` (`id`, `data`) VALUES
(1, 'test root line 1'),
(2, 'test root line 2'),
(3, 'test root line 3');
-- --------------------------------------------------------
--
-- 表的结构 `subtb`
--
CREATE TABLE IF NOT EXISTS `subtb` (
`id` int(10) unsigned NOT NULL,
`rootid` int(10) unsigned NOT NULL DEFAULT '0',
`data` varchar(128) NOT NULL DEFAULT ''
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
--
-- 转存表中的数据 `subtb`
--
INSERT INTO `subtb` (`id`, `rootid`, `data`) VALUES
(1, 1, 'test sub line 1 for root 1'),
(2, 1, 'test sub line 2 for root 1'),
(3, 1, 'test sub line 3 for root 1'),
(4, 2, 'test sub line 1 for root 2'),
(5, 2, 'test sub line 2 for root 2'),
(6, 2, 'test sub line 3 for root 2'),
(7, 3, 'test sub line 1 for root 3'),
(8, 3, 'test sub line 2 for root 3'),
(9, 3, 'test sub line 3 for root 3');
--
-- Indexes for dumped tables
--
--
-- Indexes for table `roottb`
--
ALTER TABLE `roottb`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `id` (`id`);
--
-- Indexes for table `subtb`
--
ALTER TABLE `subtb`
ADD PRIMARY KEY (`id`),
ADD KEY `rootid` (`rootid`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `roottb`
--
ALTER TABLE `roottb`
MODIFY `id` int(11) unsigned NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=4;
--
-- AUTO_INCREMENT for table `subtb`
--
ALTER TABLE `subtb`
MODIFY `id` int(10) unsigned NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=10;
--
-- 限制导出的表
--
--
-- 限制表 `subtb`
--
ALTER TABLE `subtb`
ADD CONSTRAINT `test` FOREIGN KEY (`rootid`) REFERENCES `roottb` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
创建数据表的时候给予主键和索引在导出表的时候不知道为什么显示在后面。
执行这个SQL之后可以得到的数据是:
然后我们删除第二条数据,得到的是:
功能是实现了,需要注意的是
第一:必须使用InnoDB引擎;
第二:外键必须建立索引(INDEX);
第三:在phpmyadmin中设置级联更新和删除的时候是
在删除文章的时候级联删除文章表的评论,这个功能还是蛮实用的。有兴趣的可以测试,如果本文章中有错误,欢迎指出。谢谢