2012-07-24 34 views
0

我有3个表 -插入3个表是相互依存

1. Country (CountryName, CID (PK- AutoIncrement)) 
2. State (SID(PK- AutoIncrement), StateName, CID (FK to Country) 
3. City (CityName, CID, SID (FK to State) 

现在我需要插入只是名称与国家或地区名称,Statename的和CITYNAME三个表。该标识需要得到更新。

我该怎么做?

感谢,

+1

能否请您澄清这个..当我进入状态表中的Statename的,我怎么知道哪些它属于哪个国家?与City相同的情况? – 2012-07-24 09:00:03

+0

如果一次插入多个表的整个过程对您来说完全是新的,那么如果您只使用两个表的简单案例,则可能会从中受益更多。当你从较简单的问题开始,然后转向较难的问题时,学习新事物通常会更容易。 – 2012-07-24 09:23:52

+0

谢谢Andriy,我以前曾使用过两张桌子,现在当我在这里使用时,它的场景不同。 – Girish 2012-07-24 09:32:38

回答

0

您可以使用存储过程来存储过程里面,你可以先插入到该国表:

Insert into Country (CountryName) VALUES (@CountryName) 
DECLARE @cid as INTEGER = @@IDENTITY 

然后使用SELECT @@ IDENTITY在这样的谢胜利插入:

Insert into State(StateName, cid) values (@StateName, @cid) 
DECLARE @SID as INTEGER = @@IDENTITY 

,并使用相同的第三插入statment:

Insert into City (CityName, CID,SID) values (@CityName,@CID,@SID) 

这是所有你所需要的

+0

谢谢,但它不会不断增加同一国家的身份吗? 如在印度两次,价值增加..我想印度= 1,加拿大= 2,总是.. – Girish 2012-07-24 09:24:18

0

如果你想使用LINQ to SQL的

var country = new Dbml.Country(); 
country.Name = "countryname"; 

var state = new Dbml.State(); 
state.Country = country; 
state.Name = "stateName" 

var city = new Dbml.City(); 
city.State= state; 
city.cityName = "cityName"; 

context.SubmitChanges(); 
+0

我不知道如何使用它。你能详细说明吗? – Girish 2012-07-24 09:28:39

+0

您可能希望看到[这里](http://stackoverflow.com/questions/2182577/how-to-get-started-with-linq-to-sql)Linq to SQL – 2012-07-24 09:34:10