日期:2014-05-17  浏览次数:20428 次

多对多表的插入问题
描述如下:比如有产品对应规格是多对多的关系,表的定义如下Product(ProID,ProName,……);规格Size(SizeId,SizeName,……)中间表ProSize(ID,ProId,SizeId,……);现在规格是比较固定的,在插入Product的同时,怎么实现ProSize的插入?

------解决方案--------------------
插入Product成功后,返回ProID,
规格表的内容少的话,就遍历规格表,动态的拼插入ProSize的语句 执行
规格表的内容多的话,可以考虑调用一个存储过程,就不在应用程序里拼语句了
------解决方案--------------------
就像楼上说的,首先插入Product表,然后返回一个ID,然后再ProSize表中,插入相对应的规格就行了
------解决方案--------------------
为什么你界面不把规格做成下拉框呢?下拉框选项value为SizeId
如果添加新产品:
insert Product返回ProId,
用ProId、SizeId,insert ProSize

如果添加新产品、新规格:
insert Product返回ProId,
insert Size返回SizeId,
用ProId、SizeId,insert ProSize
------解决方案--------------------
这个是我以前的一个同时添加两张表数据。
ALTER PROCEDURE [dbo].[T_User_ADD]
@U_Accounts varchar(50),
@U_Pwd varchar(50)

 AS 
INSERT INTO [T_User](
[U_Accounts],[U_Pwd]
)VALUES(
@U_Accounts,@U_Pwd
)
IF(@@identity>0)
BEGIN
INSERT INTO [JTDB].[dbo].[TR_UserConfig]
([U_UserId]
,[U_UserTypeId]
,[I_IntegId]
,[D_Id])
VALUES
(@@identity
,1
,1
,1)
INSERT INTO T_User (U_Phone)VALUES(@@identity)
END


------解决方案--------------------
一楼正解,先插入product,返回productId,然后再中间表中,记录productId,规格型号或其ID即可,看你具体怎么应用
------解决方案--------------------
注意开事物