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は主キー入力ebasicと外部キー入力でeaccountあるため、行がから削除されるebasicと、からeaccountも削除されますON DELETE CASCADE

ただし、どちらも自動インクリメント列であるため、行がebasic正常に挿入されると、同じと同じ対応する行がeid同じ自動インクリメント番号でebasic挿入されます。eaccount

現在、データベースをSQL Serverに移行しようとしていますが、自動インクリメント用にあるのはIDENTITY(seed, increment)です。ただし、ここではSQL Serverではauto_incrementとして外部キーを作成できませんが、MySQLでは可能です。助けてください !!

4

1 に答える 1

3

SQL Server では、自動インクリメント オプションを使用して外部キーを作成し、カスケード削除オプションをオンに設定することはできません。1 つのテーブルに行を挿入する場合、挿入された行 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 に答える