0
我在MySQL中拥有这些表结构,并根据我的要求工作正常。在SQL Server 2005中将外键设为自动增量
CREATE TABLE `ebasic` (<br>
`eid` int(11) NOT NULL AUTO_INCREMENT, <br>
`d_id` int(11) NOT NULL, <br>
`pos` varchar(50) DEFAULT NULL, <br>
`hdd` varchar(5) DEFAULT NULL, <br>
`hmm` varchar(10) DEFAULT NULL, <br>
`hyy` varchar(5) DEFAULT NULL, <br>
`fname` varchar(25) DEFAULT NULL, <br>
`lname` varchar(25) DEFAULT NULL, <br>
`bdd` varchar(5) DEFAULT NULL, <br>
`bmm` varchar(10) DEFAULT NULL, <br>
`byy` varchar(5) DEFAULT NULL, <br>
`gender` varchar(10) DEFAULT NULL, <br>
`addr` varchar(100) DEFAULT NULL, <br>
`city` varchar(25) DEFAULT NULL, <br>
`state` varchar(25) DEFAULT NULL, <br>
`pin` varchar(10) DEFAULT NULL, <br>
`country` varchar(25) DEFAULT NULL, <br>
`tel` varchar(25) DEFAULT NULL, <br>
`mobile` varchar(25) DEFAULT NULL, <br>
`email` varchar(30) DEFAULT NULL, <br>
`qual` varchar(30) DEFAULT NULL, <br>
PRIMARY KEY (`eid`));<br>
CREATE TABLE `eaccount` (<br>
`eid` int(11) NOT NULL AUTO_INCREMENT, <br>
`d_id` int(11) NOT NULL, <br>
`accno` varchar(20) DEFAULT NULL, <br>
`pan` varchar(15) DEFAULT NULL, <br>
`passport` varchar(15) DEFAULT NULL, <br>
`visa` varchar(15) DEFAULT NULL, <br>
`type` varchar(20) DEFAULT NULL, <br>
KEY `eid` (`eid`), <br>
FOREIGN KEY (`eid`) REFERENCES `ebasic` (`eid`) ON DELETE CASCADE); <br>
因此,列eid
是ebasic
主键和eaccount
外键,这样如果行从ebasic
删除,它会从eaccount
删除过,因为ON DELETE CASCADE
。
但是,他们两人都是自动递增列,也因此当行插入ebasic
成功,相应的行与eid
一样ebasic
插入eaccount
有自动递增数相同。
现在,我试图将我的数据库迁移到SQL Server,我在那里的自动增量是IDENTITY(seed, increment)
。但是,我不能在SQL Server中将外键作为auto_increment,但在MySQL中它是可能的。请帮忙 !!
你不能在MS SQL中这样做,你可以试试这个 - 首先在ebasic中插入一行,然后插入行eid并将其插入到eaccount表中。 – 2013-03-09 05:38:29
因为我必须折射整个项目代码,它会花费很多时间做到这一点.... – user2150770 2013-03-09 05:41:07
这整个设计看起来像一个非常糟糕的主意....如果在ebasic和eaccount中自动递增'突然不同步?这不是一个非常可靠的方法去!你需要插入'ebasic',然后获取你得到的任何'eid',然后将**写入'eaccount' - 其他任何东西都是kludge .... – 2013-03-09 09:28:14