source: subversion/trunk/roundcubemail/SQL/mssql.upgrade.sql @ 5711

Last change on this file since 5711 was 5711, checked in by alec, 17 months ago
  • Fix SQL Error when saving a contact with many email addresses (#1488286)
File size: 7.8 KB
Line 
1-- Roundcube Webmail update script for MSSQL databases
2
3-- Updates from version 0.3.1
4
5ALTER TABLE [dbo].[messages] ADD CONSTRAINT [FK_messages_user_id]
6    FOREIGN KEY ([user_id]) REFERENCES [dbo].[users] ([user_id])
7    ON DELETE CASCADE ON UPDATE CASCADE
8GO
9
10ALTER TABLE [dbo].[cache] ADD CONSTRAINT [FK_cache_user_id]
11    FOREIGN KEY ([user_id]) REFERENCES [dbo].[users] ([user_id])
12    ON DELETE CASCADE ON UPDATE CASCADE
13GO
14
15ALTER TABLE [dbo].[contacts] ADD CONSTRAINT [FK_contacts_user_id]
16    FOREIGN KEY ([user_id]) REFERENCES [dbo].[users] ([user_id])
17    ON DELETE CASCADE ON UPDATE CASCADE
18GO
19
20ALTER TABLE [dbo].[identities] ADD CONSTRAINT [FK_identities_user_id] 
21    FOREIGN KEY ([user_id]) REFERENCES [dbo].[users] ([user_id])
22    ON DELETE CASCADE ON UPDATE CASCADE
23GO
24
25ALTER TABLE [dbo].[identities] ADD [changed] [datetime] NULL 
26GO
27
28CREATE TABLE [dbo].[contactgroups] (
29        [contactgroup_id] [int] IDENTITY (1, 1) NOT NULL ,
30        [user_id] [int] NOT NULL ,
31        [changed] [datetime] NOT NULL ,
32        [del] [char] (1) COLLATE Latin1_General_CI_AI NOT NULL ,
33        [name] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL
34) ON [PRIMARY] 
35GO
36
37CREATE TABLE [dbo].[contactgroupmembers] (
38        [contactgroup_id] [int] NOT NULL ,
39        [contact_id] [int] NOT NULL ,
40        [created] [datetime] NOT NULL
41) ON [PRIMARY] 
42GO
43
44ALTER TABLE [dbo].[contactgroups] WITH NOCHECK ADD 
45        CONSTRAINT [PK_contactgroups_contactgroup_id] PRIMARY KEY CLUSTERED
46        (
47                [contactgroup_id]
48        )  ON [PRIMARY] 
49GO
50
51ALTER TABLE [dbo].[contactgroupmembers] WITH NOCHECK ADD 
52        CONSTRAINT [PK_contactgroupmembers_id] PRIMARY KEY CLUSTERED
53        (
54                [contactgroup_id], [contact_id]
55        )  ON [PRIMARY] 
56GO
57
58ALTER TABLE [dbo].[contactgroups] ADD 
59        CONSTRAINT [DF_contactgroups_user_id] DEFAULT (0) FOR [user_id],
60        CONSTRAINT [DF_contactgroups_changed] DEFAULT (getdate()) FOR [changed],
61        CONSTRAINT [DF_contactgroups_del] DEFAULT ('0') FOR [del],
62        CONSTRAINT [DF_contactgroups_name] DEFAULT ('') FOR [name],
63        CONSTRAINT [CK_contactgroups_del] CHECK ([del] = '1' or [del] = '0')
64GO
65
66CREATE  INDEX [IX_contactgroups_user_id] ON [dbo].[contacts]([user_id]) ON [PRIMARY]
67GO
68
69ALTER TABLE [dbo].[contactgroupmembers] ADD 
70        CONSTRAINT [DF_contactgroupmembers_contactgroup_id] DEFAULT (0) FOR [contactgroup_id],
71        CONSTRAINT [DF_contactgroupmembers_contact_id] DEFAULT (0) FOR [contact_id],
72        CONSTRAINT [DF_contactgroupmembers_created] DEFAULT (getdate()) FOR [created]
73GO
74
75ALTER TABLE [dbo].[contactgroupmembers] ADD CONSTRAINT [FK_contactgroupmembers_contactgroup_id]
76    FOREIGN KEY ([contactgroup_id]) REFERENCES [dbo].[contactgroups] ([contactgroup_id])
77    ON DELETE CASCADE ON UPDATE CASCADE
78GO
79
80CREATE TRIGGER [contact_delete_member] ON [dbo].[contacts]
81    AFTER DELETE AS
82    DELETE FROM [dbo].[contactgroupmembers]
83    WHERE [contact_id] IN (SELECT [contact_id] FROM deleted)
84GO
85
86ALTER TABLE [dbo].[contactgroups] ADD CONSTRAINT [FK_contactgroups_user_id]
87    FOREIGN KEY ([user_id]) REFERENCES [dbo].[users] ([user_id])
88    ON DELETE CASCADE ON UPDATE CASCADE
89GO
90
91-- Updates from version 0.4.2
92
93DROP INDEX [IX_users_username]
94GO
95CREATE UNIQUE INDEX [IX_users_username] ON [dbo].[users]([username],[mail_host]) ON [PRIMARY]
96GO
97ALTER TABLE [dbo].[contacts] ALTER COLUMN [email] [varchar] (255) COLLATE Latin1_General_CI_AI NOT NULL
98GO
99
100-- Updates from version 0.5.1
101-- Updates from version 0.5.2
102-- Updates from version 0.5.3
103-- Updates from version 0.5.4
104
105ALTER TABLE [dbo].[contacts] ADD [words] [text] COLLATE Latin1_General_CI_AI NULL 
106GO
107CREATE INDEX [IX_contactgroupmembers_contact_id] ON [dbo].[contactgroupmembers]([contact_id]) ON [PRIMARY]
108GO
109DELETE FROM [dbo].[messages]
110GO
111DELETE FROM [dbo].[cache]
112GO
113
114-- Updates from version 0.6
115
116CREATE TABLE [dbo].[dictionary] (
117    [user_id] [int] ,
118    [language] [varchar] (5) COLLATE Latin1_General_CI_AI NOT NULL ,
119    [data] [text] COLLATE Latin1_General_CI_AI NOT NULL 
120) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
121GO
122CREATE  UNIQUE INDEX [IX_dictionary_user_language] ON [dbo].[dictionary]([user_id],[language]) ON [PRIMARY]
123GO
124
125CREATE TABLE [dbo].[searches] (
126        [search_id] [int] IDENTITY (1, 1) NOT NULL ,
127        [user_id] [int] NOT NULL ,
128        [type] [tinyint] NOT NULL ,
129        [name] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL ,
130        [data] [text] COLLATE Latin1_General_CI_AI NOT NULL 
131) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
132GO
133
134ALTER TABLE [dbo].[searches] WITH NOCHECK ADD 
135        CONSTRAINT [PK_searches_search_id] PRIMARY KEY CLUSTERED
136        (
137                [search_id]
138        ) ON [PRIMARY] 
139GO
140
141ALTER TABLE [dbo].[searches] ADD 
142        CONSTRAINT [DF_searches_user] DEFAULT (0) FOR [user_id],
143        CONSTRAINT [DF_searches_type] DEFAULT (0) FOR [type],
144GO
145
146CREATE UNIQUE INDEX [IX_searches_user_type_name] ON [dbo].[searches]([user_id],[type],[name]) ON [PRIMARY]
147GO
148
149ALTER TABLE [dbo].[searches] ADD CONSTRAINT [FK_searches_user_id]
150    FOREIGN KEY ([user_id]) REFERENCES [dbo].[users] ([user_id])
151    ON DELETE CASCADE ON UPDATE CASCADE
152GO
153
154DROP TABLE [dbo].[messages]
155GO
156CREATE TABLE [dbo].[cache_index] (
157        [user_id] [int] NOT NULL ,
158        [mailbox] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL ,
159        [changed] [datetime] NOT NULL ,
160        [valid] [char] (1) COLLATE Latin1_General_CI_AI NOT NULL ,
161        [data] [text] COLLATE Latin1_General_CI_AI NOT NULL 
162) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
163GO
164
165CREATE TABLE [dbo].[cache_thread] (
166        [user_id] [int] NOT NULL ,
167        [mailbox] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL ,
168        [changed] [datetime] NOT NULL ,
169        [data] [text] COLLATE Latin1_General_CI_AI NOT NULL 
170) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
171GO
172
173CREATE TABLE [dbo].[cache_messages] (
174        [user_id] [int] NOT NULL ,
175        [mailbox] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL ,
176        [uid] [int] NOT NULL ,
177        [changed] [datetime] NOT NULL ,
178        [data] [text] COLLATE Latin1_General_CI_AI NOT NULL 
179        [flags] [int] NOT NULL ,
180) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
181GO
182
183ALTER TABLE [dbo].[cache_index] WITH NOCHECK ADD 
184         PRIMARY KEY CLUSTERED
185        (
186                [user_id],[mailbox]
187        ) ON [PRIMARY] 
188GO
189
190ALTER TABLE [dbo].[cache_thread] WITH NOCHECK ADD 
191         PRIMARY KEY CLUSTERED
192        (
193                [user_id],[mailbox]
194        ) ON [PRIMARY] 
195GO
196
197ALTER TABLE [dbo].[cache_messages] WITH NOCHECK ADD 
198         PRIMARY KEY CLUSTERED
199        (
200                [user_id],[mailbox],[uid]
201        ) ON [PRIMARY] 
202GO
203
204ALTER TABLE [dbo].[cache_index] ADD 
205        CONSTRAINT [DF_cache_index_changed] DEFAULT (getdate()) FOR [changed],
206        CONSTRAINT [DF_cache_index_valid] DEFAULT ('0') FOR [valid]
207GO
208
209CREATE  INDEX [IX_cache_index_user_id] ON [dbo].[cache_index]([user_id]) ON [PRIMARY]
210GO
211
212ALTER TABLE [dbo].[cache_thread] ADD 
213        CONSTRAINT [DF_cache_thread_changed] DEFAULT (getdate()) FOR [changed]
214GO
215
216CREATE  INDEX [IX_cache_thread_user_id] ON [dbo].[cache_thread]([user_id]) ON [PRIMARY]
217GO
218
219ALTER TABLE [dbo].[cache_messages] ADD 
220        CONSTRAINT [DF_cache_messages_changed] DEFAULT (getdate()) FOR [changed],
221        CONSTRAINT [DF_cache_messages_flags] DEFAULT (0) FOR [flags]
222GO
223
224CREATE  INDEX [IX_cache_messages_user_id] ON [dbo].[cache_messages]([user_id]) ON [PRIMARY]
225GO
226
227ALTER TABLE [dbo].[cache_index] ADD CONSTRAINT [FK_cache_index_user_id]
228    FOREIGN KEY ([user_id]) REFERENCES [dbo].[users] ([user_id])
229    ON DELETE CASCADE ON UPDATE CASCADE
230GO
231
232ALTER TABLE [dbo].[cache_thread] ADD CONSTRAINT [FK_cache_thread_user_id]
233    FOREIGN KEY ([user_id]) REFERENCES [dbo].[users] ([user_id])
234    ON DELETE CASCADE ON UPDATE CASCADE
235GO
236
237ALTER TABLE [dbo].[cache_messages] ADD CONSTRAINT [FK_cache_messages_user_id]
238    FOREIGN KEY ([user_id]) REFERENCES [dbo].[users] ([user_id])
239    ON DELETE CASCADE ON UPDATE CASCADE
240GO
241
242-- Updates from version 0.7-beta
243
244ALTER TABLE [dbo].[session] ALTER COLUMN [sess_id] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL
245GO
246
247-- Updates from version 0.7
248
249ALTER TABLE [dbo].[contacts] ALTER COLUMN [email] [text] COLLATE Latin1_General_CI_AI NOT NULL
250GO
251
Note: See TracBrowser for help on using the repository browser.