-
Notifications
You must be signed in to change notification settings - Fork 15
Expand file tree
/
Copy pathcreate-neventstore-table.txt
More file actions
35 lines (32 loc) · 1.83 KB
/
create-neventstore-table.txt
File metadata and controls
35 lines (32 loc) · 1.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
IF EXISTS(SELECT * FROM sysobjects WHERE name='Commits' AND xtype = 'U') RETURN;
CREATE TABLE [dbo].[Commits]
(
[BucketId] [varchar](200) NOT NULL,
[StreamId] [char](200) NOT NULL,
[StreamIdOriginal] [nvarchar](1000) NOT NULL,
[StreamRevision] [int] NOT NULL CHECK ([StreamRevision] > 0),
[Items] [int] NOT NULL CHECK ([Items] > 0),
[CommitId] [uniqueidentifier] NOT NULL CHECK ([CommitId] != 0x0),
[CommitSequence] [int] NOT NULL CHECK ([CommitSequence] > 0),
[CheckpointNumber] [bigint] IDENTITY NOT NULL,
[Headers] [varbinary](MAX) NULL CHECK ([Headers] IS NULL OR DATALENGTH([Headers]) > 0),
[Payload] [varbinary](MAX) NOT NULL CHECK (DATALENGTH([Payload]) > 0),
CONSTRAINT [PK_Commits] PRIMARY KEY CLUSTERED ([CheckpointNumber])
);
--datetime2 is supported starting from MSSQL 2008. For MSSQL 2005 datetime has to be used
IF EXISTS(SELECT * FROM sys.types WHERE NAME = 'datetime2')
ALTER TABLE [dbo].[Commits] ADD [CommitStamp] [datetime2] NOT NULL
ELSE
ALTER TABLE [dbo].[Commits] ADD [CommitStamp] [datetime] NOT NULL
CREATE UNIQUE NONCLUSTERED INDEX [IX_Commits_CommitSequence] ON Commits (BucketId, StreamId, CommitSequence);
CREATE UNIQUE NONCLUSTERED INDEX [IX_Commits_CommitId] ON [dbo].[Commits] ([BucketId], [StreamId], [CommitId]);
CREATE UNIQUE NONCLUSTERED INDEX [IX_Commits_Revisions] ON [dbo].[Commits] ([BucketId], [StreamId], [StreamRevision], [Items]);
CREATE INDEX [IX_Commits_Stamp] ON Commits ([CommitStamp]);
CREATE TABLE [dbo].[Snapshots]
(
[BucketId] [varchar](40) NOT NULL,
[StreamId] [char](40) NOT NULL,
[StreamRevision] [int] NOT NULL CHECK ([StreamRevision] > 0),
[Payload] [varbinary](MAX) NOT NULL CHECK (DATALENGTH([Payload]) > 0),
CONSTRAINT [PK_Snapshots] PRIMARY KEY CLUSTERED ([BucketId], [StreamId], [StreamRevision])
);