Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Создание индекса (MSSQL)


mfender ©   (2009-09-08 11:31:00) 

Здравствуйте, товарищи!

У меня вопрос: проверяю наличие таблицы в БД, если нет - создаю.


IF NOT EXISTS (SELECT * FROM sysobjects WHERE name='NewsFeed_2009')
CREATE TABLE NewsFeed_2009(
OID bigint IDENTITY(1,1) NOT NULL,
pubDate datetime NULL,
Title varchar(255) COLLATE Cyrillic_General_CI_AS NULL,
Description text COLLATE Cyrillic_General_CI_AS NULL,
Category int NULL,
Owner int NULL)
GO
CREATE NONCLUSTERED INDEX pubDate ON NewsFeed_2009 (pubDate ASC) WITH (PAD_INDEX  = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX Owner ON NewsFeed_2009 (Owner ASC) WITH (PAD_INDEX  = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX Category ON NewsFeed_2009 (Category ASC) WITH (PAD_INDEX  = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF) ON [PRIMARY]
GO


Так это всё выглядит. Однако, если таблица уже существует, происходит ошибка на стадии создания индексов (они уже существуют). Как проверить их наличие?

Спасибо.


Ega23   (2009-09-08 12:48:00) [1]

1. Зачем NONCLUSTERED?
2. Почему нет первичного ключа?


sniknik   (2009-09-08 12:06:00) [2]

IF NOT EXISTS (SELECT * FROM sysindexes WHERE Id=OBJECT_ID('NewsFeed_2009') AND Name='pubDate')
CREATE NONCLUSTERED INDEX pubDate ...


mfender   (2009-09-08 11:59:00) [3]

Ага, разобрался. После условия все действия заключил в BEGIN...END. и всё нормально стало.


Медвежонок Пятачок   (2009-09-08 11:53:00) [4]

точно так же как и наличие таблицы.


Наверх

Титульная страница Поиск, карта сайта Написать письмо