Как создать ограничение на уникальность данных просто в день часть даты и времени?

Может быть полезно упомянуть, что вы используете WordPress ...

Есть ли у вас доступ к изменению CSS? Тогда я бы посоветовал добавить класс в список под заголовком .mainlist и использовать css как этот

.mainlist li a { /* change the style of the list under the title*/
    color: black;
}

.sidebar li a { /* change the style of the s*/
    color: white;
}
10
задан Mehrdad Afshari 7 March 2009 в 14:21
поделиться

4 ответа

Ну, в SQL Server 2008 существует новый тип данных под названием "ДАТА" - Вы могли использовать тот столбец и создать индекс на этом.

Вы могли, конечно, также добавить вычисляемый столбец типа "ДАТА" к Вашей таблице и просто заполнить часть даты столбца DATETIME в тот вычисляемый столбец, сделать, это СОХРАНИЛОСЬ, и индексируйте его. Должен работать просто великолепно!

Что-то как этот:

ALTER TABLE dbo.Entries
   ADD DateOnly as CAST(CompositionDate AS DATE) PERSISTED

CREATE UNIQUE INDEX UX_Entries ON Entries(DateOnly, Slug)

Marc

13
ответ дан 3 December 2019 в 22:02
поделиться

Так как Вы находитесь на 2008, используйте тип данных Даты, как Marc предполагает. Иначе более легкое решение состоит в том, чтобы иметь невычисляемый столбец (что означает, что необходимо будет заполнить его на ВСТАВКЕ), который использует дату в формате YYYYMMDD. Это - целочисленный тип данных и является маленьким и простым в использовании.

2
ответ дан 3 December 2019 в 22:02
поделиться

Для SQL 2005 Вы могли сделать по существу то же самое, что рекомендуемые marc_s, просто используйте стандартный DateTime. Это выглядело бы примерно так (непротестированный код здесь):

ALTER TABLE Entries ADD
    JustTheDate AS DATEADD(day, DATEDIFF(day, 0, CompositionDate), 0) NOT NULL PERSISTED

Затем создайте свой индекс на (JustTheDate, Краткий заголовок)

Примечание: Оператор DATEADD/DATEDIFF там вычисляет просто дату CompositionDate.

1
ответ дан 3 December 2019 в 22:02
поделиться

За эти годы у нас было множество проблем с Вычисляемыми столбцами в SQL Server, таким образом, мы прекратили использовать их.

Вы могли использовать ПРЕДСТАВЛЕНИЕ со столбцом для только для даты - и поместить уникальный индекс на столбец того ПРЕДСТАВЛЕНИЯ.

(Возможно полезный побочный эффект состоит в том, что у Вас может быть ПРЕДСТАВЛЕНИЕ, исключают некоторые строки - таким образом, Вы могли реализовать вещи как "DateColumn, должно быть уникальным, но исключить, ГДЕ DateColumn ЯВЛЯЕТСЯ ПУСТЫМ),

Существующий столбец CompositionDate мог быть разделен на два поля - CompositionDate и CompositionTime - и Получать Представление, которое присоединяется к ним назад вместе, если бы Вам нужно это - который затем позволил бы собственный индекс на столбце Только для даты

(Это может быть реализовано в SQL 2005 и более раннее использование DateTime - хотя немного экстравагантный для просто Даты или Время и не оба),

И наконец у Вас могла быть ВСТАВКА / триггер ОБНОВЛЕНИЯ, который не осуществил ту никакую другую запись, существовавшую с дублирующимся CompositionDate (только часть даты)

0
ответ дан 3 December 2019 в 22:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: