Great editing: (much better) Option 1:
( : @VladimirBaranov , , , SEQUENCE )
- , , , . , , TSQL, , . : . SQL Server 2012 2014 :
CREATE SEQUENCE oddNums
START WITH 1
INCREMENT BY 2;
GO
CREATE SEQUENCE evenNums
START WITH 0
INCREMENT BY 2;
GO
AUTO INCREMENT PK, DEFAULT SEQUENCE ( ):
CREATE TABLE oddMirror (
[id] int PRIMARY KEY DEFAULT NEXT VALUE FOR oddNums,
[data] varchar(7)
);
CREATE TABLE evenMirror (
[id] int PRIMARY KEY DEFAULT NEXT VALUE FOR evenNums,
[data] varchar(7)
);
, PK .
SQLFiddle.
, IDENTITY, (- DEFAULT), id, .
, , , SEQUENCE , ( ) , SEQUENCE.
, MSDN, SEQUENCE SQL Server.
( ) 2:
(: ). , , - , , , . - , .
, :
CREATE TABLE oddMirror
(id INT NOT NULL IDENTITY(1,2),
data NVARCHAR(10))
GO
CREATE TABLE evenMirror
(id INT NOT NULL IDENTITY(2,2),
data NVARCHAR(10)
GO
, , reset "" . , oddMirror:
DECLARE @maxId INT
DECLARE @newSeed INT
SET @maxId = (SELECT MAX(id) FROM oddMirror)
SET @newSeed = (SELECT CASE WHEN @maxId % 2 = 1 THEN @maxId ELSE @maxId -1 END)
DBCC CHECKIDENT('dbo.oddMirror', RESEED, @newSeed)
GO
evenMirror:
DECLARE @maxId INT
DECLARE @newSeed INT
SET @maxId = (SELECT MAX(id) FROM evenMirror)
SET @newSeed = (SELECT CASE WHEN @maxId % 2 = 0 THEN @maxId ELSE @maxId -1 END)
DBCC CHECKIDENT('dbo.evenMirror', RESEED, @newSeed)
GO
, oddMirror : " id, , , , ".
"evenMirror", , max id .
:
oddMirror
1,"one"
3,"three"
5,"five"
evenMirror
2,"two"
4,"four"
6,"six"
8,"eight"
(, evenMirror )
:
oddMirror
1,"one"
2,"two"
3,"three"
4,"four"
5,"five"
6,"six"
8,"eight"
--evenMirror looks the same as this now
:
MAX(id) on oddMirror - 8. 8 % 2 = 0, @newSeed = 8 - 1 = 7, , oddMirror id = 9.
MAX(id) on evenMirror 8, . 8 % x = 0, @newSeed = 8, 'evenMirror will get id = 10`
id = 7 , , .
:
INSERT INTO oddMirror (data) VALUE ("data")
GO
INSERT INTO evenMirror (data) VALUE ("otherData")
GO
:
oddMirror
1,"one"
2,"two"
3,"three"
4,"four"
5,"five"
6,"six"
8,"eight"
9,"data"
evenMirror
1,"one"
2,"two"
3,"three"
4,"four"
5,"five"
6,"six"
8,"eight"
10,"otherData"
, , WHEN CASE , , , . , (GUID) , , (SEQUENCE s) , , , .
, . , , . , "" (, 3-4 - ), , , , , .
, , db, , , , , id db .