0

我在 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是主键 inebasic和外键eaccount,所以如果行从 中删除ebasic,它eaccount也会从 中删除,因为ON DELETE CASCADE

但是,它们都是自增列,所以当成功插入一行时,插入的ebasic对应行与自增编号相同eidebasiceaccount

现在,我正在尝试将我的数据库迁移到 SQL Server,我在那里的自动增量是IDENTITY(seed, increment). 但是,我不能在 SQL Server 中将外键设置为 auto_increment,但在 MySQL 中是可能的。请帮忙 !!

4

1 回答 1

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,...);
于 2013-03-09T05:44:35.410 回答