在 SQL 服务器中插入或删除的输出
Output Inserted or deleted in SQL Server
我有一个 SalesTransaction
和一个 Invoice
table:
Create Table SalesTransaction
(
SalesTransactionId int Identity(1,1) Primary Key,
CustomerId int Foreign key references Customer(CustomerId) ,
ProductId int Foreign key references Product(ProductID),
Price money,
Quantity int,
Total money,
InvoiceId int
)
和
Create Table Invoice
(
InvoiceId int Primary Key,
InvoiceAmount money Not Null ,
BalanceAmount money,
AmountPaid money Not Null
)
我想要的是 Invoiceid
从 Invoice
table 到标签 InvoiceId
of SalesTransaction
table.
一开始SalesTransaction
的InvoiceId
是NULL,添加invoicetable的数据后,应该标记回[=13=的InvoiceId
=] table
第一个解决方案(只有一个新的外键)
对于以下架构
Create Table Invoice
(
InvoiceId int Primary Key,
InvoiceAmount money Not Null ,
BalanceAmount money,
AmountPaid money Not Null
)
Create Table SalesTransaction
(
SalesTransactionId int Identity(1,1) Primary Key,
CustomerId int Foreign key references Customer(CustomerId) ,
ProductId int Foreign key references Product(ProductID),
Price money,
Quantity int,
Total money,
InvoiceId int Foreign key references Invoice(InvoiceId)
)
这是您的 INSERT/UPDATE 个查询
DECLARE @SalesTransactionId as int
DECLARE @InvoiceId as int
INSERT INTO [dbo].[SalesTransaction]
([CustomerId]
,[ProductId]
,[Price]
,[Quantity]
,[Total]
,[InvoiceId])
VALUES
(1
,1
,1
,1
,1
,NULL)
SET @SalesTransactionId = SCOPE_IDENTITY()
SET @InvoiceId = 1
INSERT INTO [dbo].[Invoice]
([InvoiceId]
,[InvoiceAmount]
,[BalanceAmount]
,[AmountPaid])
VALUES
(@InvoiceId
,1
,1
,1)
UPDATE [dbo].[SalesTransaction]
SET [InvoiceId] = @InvoiceId
WHERE SalesTransactionId = @SalesTransactionId
GO
我还建议您将 table Invoice
的列 InvoiceId
设置为身份。
第二种解决方案(使用新的外键和发票 pk 的标识)
对于以下架构
Create Table Invoice
(
InvoiceId int Identity(1,1) Primary Key,
InvoiceAmount money Not Null ,
BalanceAmount money,
AmountPaid money Not Null
)
Create Table SalesTransaction
(
SalesTransactionId int Identity(1,1) Primary Key,
CustomerId int Foreign key references Customer(CustomerId) ,
ProductId int Foreign key references Product(ProductID),
Price money,
Quantity int,
Total money,
InvoiceId int Foreign key references Invoice(InvoiceId)
)
这是您的 INSERT/UPDATE 个查询
DECLARE @SalesTransactionId as int
DECLARE @InvoiceId as int
INSERT INTO [dbo].[SalesTransaction]
([CustomerId]
,[ProductId]
,[Price]
,[Quantity]
,[Total]
,[InvoiceId])
VALUES
(1
,1
,1
,1
,1
,NULL)
SET @SalesTransactionId = SCOPE_IDENTITY()
INSERT INTO [dbo].[Invoice]
([InvoiceAmount]
,[BalanceAmount]
,[AmountPaid])
VALUES
(1
,1
,1)
SET @InvoiceId = SCOPE_IDENTITY()
UPDATE [dbo].[SalesTransaction]
SET [InvoiceId] = @InvoiceId
WHERE SalesTransactionId = @SalesTransactionId
GO
我有一个 SalesTransaction
和一个 Invoice
table:
Create Table SalesTransaction
(
SalesTransactionId int Identity(1,1) Primary Key,
CustomerId int Foreign key references Customer(CustomerId) ,
ProductId int Foreign key references Product(ProductID),
Price money,
Quantity int,
Total money,
InvoiceId int
)
和
Create Table Invoice
(
InvoiceId int Primary Key,
InvoiceAmount money Not Null ,
BalanceAmount money,
AmountPaid money Not Null
)
我想要的是 Invoiceid
从 Invoice
table 到标签 InvoiceId
of SalesTransaction
table.
一开始SalesTransaction
的InvoiceId
是NULL,添加invoicetable的数据后,应该标记回[=13=的InvoiceId
=] table
第一个解决方案(只有一个新的外键)
对于以下架构
Create Table Invoice
(
InvoiceId int Primary Key,
InvoiceAmount money Not Null ,
BalanceAmount money,
AmountPaid money Not Null
)
Create Table SalesTransaction
(
SalesTransactionId int Identity(1,1) Primary Key,
CustomerId int Foreign key references Customer(CustomerId) ,
ProductId int Foreign key references Product(ProductID),
Price money,
Quantity int,
Total money,
InvoiceId int Foreign key references Invoice(InvoiceId)
)
这是您的 INSERT/UPDATE 个查询
DECLARE @SalesTransactionId as int
DECLARE @InvoiceId as int
INSERT INTO [dbo].[SalesTransaction]
([CustomerId]
,[ProductId]
,[Price]
,[Quantity]
,[Total]
,[InvoiceId])
VALUES
(1
,1
,1
,1
,1
,NULL)
SET @SalesTransactionId = SCOPE_IDENTITY()
SET @InvoiceId = 1
INSERT INTO [dbo].[Invoice]
([InvoiceId]
,[InvoiceAmount]
,[BalanceAmount]
,[AmountPaid])
VALUES
(@InvoiceId
,1
,1
,1)
UPDATE [dbo].[SalesTransaction]
SET [InvoiceId] = @InvoiceId
WHERE SalesTransactionId = @SalesTransactionId
GO
我还建议您将 table Invoice
的列 InvoiceId
设置为身份。
第二种解决方案(使用新的外键和发票 pk 的标识)
对于以下架构
Create Table Invoice
(
InvoiceId int Identity(1,1) Primary Key,
InvoiceAmount money Not Null ,
BalanceAmount money,
AmountPaid money Not Null
)
Create Table SalesTransaction
(
SalesTransactionId int Identity(1,1) Primary Key,
CustomerId int Foreign key references Customer(CustomerId) ,
ProductId int Foreign key references Product(ProductID),
Price money,
Quantity int,
Total money,
InvoiceId int Foreign key references Invoice(InvoiceId)
)
这是您的 INSERT/UPDATE 个查询
DECLARE @SalesTransactionId as int
DECLARE @InvoiceId as int
INSERT INTO [dbo].[SalesTransaction]
([CustomerId]
,[ProductId]
,[Price]
,[Quantity]
,[Total]
,[InvoiceId])
VALUES
(1
,1
,1
,1
,1
,NULL)
SET @SalesTransactionId = SCOPE_IDENTITY()
INSERT INTO [dbo].[Invoice]
([InvoiceAmount]
,[BalanceAmount]
,[AmountPaid])
VALUES
(1
,1
,1)
SET @InvoiceId = SCOPE_IDENTITY()
UPDATE [dbo].[SalesTransaction]
SET [InvoiceId] = @InvoiceId
WHERE SalesTransactionId = @SalesTransactionId
GO