CREATE PROCEDURE MyTable_Put @MyPK int = NULL OUTPUT, @parm2 char(2) = NULL, @parm3 char(3) = NULL AS IF (@MyPK = 0 OR @MyPK IS NULL) BEGIN INSERT INTO MyTable (MyColumn2, MyColumn3) SELECT @parm2, @parm3 SELECT @MyPK = SCOPE_IDENTITY() END ELSE UPDATE MyTable SET MyColumn2 = ISNULL(@parm2, MyColumn2), MyColumn3 = ISNULL(@parm3, MyColumn3) WHERE MyPKColumn = @MyPKThen, in your DataAccess method, you just insert the row into the Parent table first, get the newly added row's PK by using the Parameters collection, stick that into the FK in the child table and then insert the child row. And be sure to wrap the whole thing up in a transaction.