22,299
社区成员




-- 建表Audit,ID为主键子增
CREATE TABLE [dbo].[Audit](
[ID] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY,
[TypeName] [varchar](50) NOT NULL
)
GO
-- 建表AuditFiedl, ID为主键自增
CREATE TABLE [dbo].[AuditField](
[ID] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY,
[AuditID] [int] NOT NULL,
[Field1] [varchar](50) NOT NULL
)
GO
-- 表AuditField AuditID字段设置为外键,引用Audit表的ID字段
ALTER TABLE [dbo].[AuditField]
ADD CONSTRAINT [FK_AuditFiled_Audit] FOREIGN KEY([AuditID])
REFERENCES [dbo].[Audit] ([ID])
GO
DECLARE @audit TABLE
(
ID int not null,
TypeName varchar(50)
)
DECLARE @auditField TABLE
(
AuditID int not null,
Field1 varchar(50)
)
-- ADD TEST DATA
DECLARE @i int = 1
DECLARE @rowCount int = 500
WHILE @i<=@rowCount
BEGIN
INSERT INTO @audit
VALUES(@i, 'SomeTypeName')
INSERT INTO @auditField
(AuditID,Field1)
VALUES(@i,'SomeThing')
SET @i += 1
END
begin transaction
INSERT INTO dbo.Audit
SELECT TypeName
FROM @audit
ORDER BY ID
declare @lastIdentity int = @@identity
declare @offSet int = @lastIdentity - @rowCount
INSERT INTO dbo.AuditField
SELECT AuditID+@offSet AS AuditID, Field1
FROM @auditField
ORDER BY AuditID
commit transaction