我在MySQL中有这些表结构,并根据我的要求工作正常。
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
删除行,则会从{{{ 1}},因为eaccount
。
但是,它们都是自动增量列,因此当一行成功插入ON DELETE CASCADE
时,ebasic
与eid
相同的相应行将插入ebasic
1}},自动增量编号相同。
现在,我正在尝试将我的数据库迁移到SQL Server,我在那里进行自动增量的是eaccount
。但是,我不能在SQL Server中将外键设为auto_increment,但在MySQL中它可能。请帮忙!!
答案 0 :(得分:3)
在SQL Server中,您无法使用自动增量选项创建外键并设置了级联删除选项,如果要在一个表中插入行,则可以插入行ID并使用该行存储在引用此键的其他表中,例如:
declare @idtable table (id int);
insert into ebasic (d_id, pos ......)
OUTPUT Inserted.eid INTO @idTable
values (1,2,...);
declare @eid int
select eid = id from @idTable;
insert into eaccount (eid, d_id...)
values (@eid, 1,...);