将值传递给一个表并在父表中更新
我有两张桌子。 dbo.Emp EmpID(PK)| 名称| typeid的(FK)
dbo.EmpType TypeID(PK)| 类型
TypeID:仅在dbo.EmpType中自动增量
当我在Emptype中更新TypeID的值时,它需要存储在dbo的TypeID中.Emp我使用的SP不起作用。
Create Procedure bridge_Type( @EmpID INT, @Name varchar(50), @Mob2 numeric(10,0), @Email varchar(50), @Type varchar(50) ) AS DECLARE @TYPEID int Set NOCOUNT OFF BEGIN TRANSACTION Insert into dbo.Emp VALUES (@EmpID, @Name, @Mob2, @Email, @TYPEID) IF @@ERROR 0 BEGIN ROLLBACK RETURN END INSERT INTO dbo.EmpType VALUES (@Type) IF @@ERROR 0 BEGIN ROLLBACK RETURN END declare @id int SET @id= @TYPEID; Update Dbo.Emp Set @TYPEID= (Select TypeID from dbo.EmpType WHERE TypeID=@typeID) COMMIT
尝试此SP,这将首先插入EmpType,并从SCOPE_IDENTITY()
获取插入的标识值,然后插入emp。
Create Procedure bridge_Type( @EmpID INT, @Name varchar(50), @Mob2 numeric(10,0), @Email varchar(50), @Type varchar(50) ) AS DECLARE @TYPEID int Set NOCOUNT OFF BEGIN TRANSACTION INSERT INTO dbo.EmpType VALUES (@Type) SET @TYPEID = SCOPE_IDENTITY() IF @@ERROR <> 0 BEGIN ROLLBACK RETURN END Insert into dbo.Emp VALUES (@EmpID, @Name, @Mob2, @Email, @TYPEID) IF @@ERROR <> 0 BEGIN ROLLBACK RETURN END COMMIT
不是100%肯定你为什么要更新EmpType表中的typeID(特别是因为它是一个自动增量键),但是,你可以看看更新你的FK约束为’更新级联’:
何时使用“ON UPDATE CASCADE”
http://msdn.microsoft.com/en-us/library/aa933119(v=sql.80).aspx
- 如何使用Bouncy Castle库在C#中使用PGP密钥签署txt文件
- 客户端 – 服务器身份validation – 使用SSPI?
- ASP.NET MVC 2 – 使用UpdateModel和LINQ to Entities(.NET 3.5)时,“无法更新类型’XYZ’的模型”
- 此SqlParameterCollection不包含带有ParameterName’@ UserId’的SqlParameter
- 从Couchbase的视图查询结果返回完整文档
- 如何在asp:listview中提取asp:按钮的clientID以与jQuery一起使用?
- C#中“get”和“set”属性的目的是什么?
- 应用程序设置中的StringCollection不会被存储
- 用Linq查询替换for-switch循环