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