Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 12.12.2018
Сообщений: 4

Ограничение CHECK | Год выпуска Книги не может превышать сегодняшнюю дату

26.05.2019, 16:45. Показов 3534. Ответов 6
Метки sql (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно добавить ограничение CHECK чтобы я мог вводить дату (выпуска книги ) которая не соответствует сегодняшней.
Я сам не особо шарю, лазил по сайтах читал но толком ничего не получилось.
Может кто помочь ?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.05.2019, 16:45
Ответы с готовыми решениями:

В библиотеке имеются книги, газеты, журналы. Для каждого печатного издания указать название; год выпуска , дату выпуска
В библиотеке имеются книги, газеты, журналы. Для каждого печатного издания указать название; год выпуска (для книги), дату выпуска (для...

Разработать базу данных «Научно-техническая библиотека» (фамилия, имя, отечество, автор книги, название книги, город и издательство, год выпуска, тема
что то никак понять не могу(( Разработать базу данных «Научно-техническая библиотека» (фамилия, имя, отечество, автор книги, название...

Найти в файле книги заданного автора и вывести их названые и год выпуска на экран
Всем привет! Надо найти в файле книги заданного автора и вывести их названые и год выпуска на экран Вот что у меня получилось: ...

6
15 / 11 / 4
Регистрация: 12.04.2019
Сообщений: 45
26.05.2019, 17:18
Лучший ответ Сообщение было отмечено SINGLE123 как решение

Решение

T-SQL
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
if not exists(select * from sys.tables where name='tBook')
 create table tBook
  (
    [ID]   int identity not null constraint PK_Book primary key
   ,[Book] nvarchar(255)
   ,[Date] datetime constraint CH_Book_Date check ([Date]<=getdate())
  )
go
insert tBook select 'Маша и Медведь', '20190101'
go
--это пройдёт
update tBook set [Date]='20190526' where ID=1 
 
--!!! здесь выскочит ошибка
update tBook set [Date]='20200101' where ID=1 
--!!!
 
--чтобы ошибка не выскакивала update делать с проверкой
declare @dDate datetime
set     @dDate='20190501'
if @dDate<=getdate()
 begin
 update tBook set [Date]=@dDate where ID=1 
 select * from tBook
 end
go
if exists(select * from sys.tables where name='tBook')
 drop table tBook
go
1
0 / 0 / 0
Регистрация: 12.12.2018
Сообщений: 4
26.05.2019, 17:38  [ТС]
Спасибо!
0
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,272
26.05.2019, 19:57
Цитата Сообщение от Valera Kochemas Посмотреть сообщение
T-SQL
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
if not exists(select * from sys.tables where name='tBook')
 create table tBook
  (
    [ID]   int identity not null constraint PK_Book primary key
   ,[Book] nvarchar(255)
   ,[Date] datetime constraint CH_Book_Date check ([Date]<=getdate())
  )
go
insert tBook select 'Маша и Медведь', '20190101'
go
--это пройдёт
update tBook set [Date]='20190526' where ID=1 
 
--!!! здесь выскочит ошибка
update tBook set [Date]='20200101' where ID=1 
--!!!
 
--чтобы ошибка не выскакивала update делать с проверкой
declare @dDate datetime
set     @dDate='20190501'
if @dDate<=getdate()
 begin
 update tBook set [Date]=@dDate where ID=1 
 select * from tBook
 end
go
if exists(select * from sys.tables where name='tBook')
 drop table tBook
go
А если
T-SQL
1
[Date]=DATEADD(SECOND, 1, GETDATE())
?
CHECK CONSTRAINT не пропустит. Это правильно?
0
15 / 11 / 4
Регистрация: 12.04.2019
Сообщений: 45
26.05.2019, 20:48
Цитата Сообщение от iap Посмотреть сообщение
CHECK CONSTRAINT не пропустит. Это правильно?
Правильно, не пропустит.
Но предполагалось (это ведь дата выхода книги), что [Date] всегда целое, без минут и секунд.
Если быть педантичным, то можно написать так:
T-SQL
1
check ([Date]<=convert(datetime,floor(convert(real,getdate())))
0
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,272
27.05.2019, 12:19
Цитата Сообщение от Valera Kochemas Посмотреть сообщение
Но предполагалось (это ведь дата выхода книги), что [Date] всегда целое, без минут и секунд.
Это предположение ни на чём не основывалось. Нет никакого контроля значения этой даты.
Если уж на то пошло, тип DATE появился аж в 2008 году. Зачем же в данном случае применять тип DATETIME?
0
15 / 11 / 4
Регистрация: 12.04.2019
Сообщений: 45
27.05.2019, 16:44
Цитата Сообщение от iap Посмотреть сообщение
Если уж на то пошло, тип DATE появился аж в 2008 году. Зачем же в данном случае применять тип DATETIME?
Вопрошающий не указал версию сервера, поэтому я написал вариант работающий в любой из них.

Цитата Сообщение от iap Посмотреть сообщение
Это предположение ни на чём не основывалось. Нет никакого контроля значения этой даты.
Как раз основано, и вот на чём - "чтобы я мог вводить дату (выпуска книги ) которая не соответствует сегодняшней." Ведь про минуты и секунды ни слова, только дата.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.05.2019, 16:44
Помогаю со студенческими работами здесь

Отображать в DateTimePicker-а сегодняшнюю дату, а не дату добавления его на форму
привет всем форумчанинам. У меня такой вопрос, как можно чтобы DateTimePicker показывал сегодняшнюю дату, а не ту дату в которую он был...

База программ. О каждой программе: название, назначение, тип (системная, прикладная, инструментальная), год выпуска. Поиск по названию и году выпуска
Тема: записи. База программ. О каждой программе: название, назначение, тип (системная, прикладная, инструментальная), год выпуска. Поиск...

получить сегодняшнюю дату в формате компа...
Как получить сегодняшнюю дату в формате компа, но в виде TimeStamp. Мне нужно , чтобы было что-то типа 2011-08-02 00:00:00.000 , или...

Как выделить сегодняшнюю дату цветом в monthcalendar?
Он выделяет цветом ту дату,в которую был добавлен компонент на форму,нужно чтобы выделял сегодняшнюю дату)Прошу помощи)

MySQL: Сравнить сегодняшнюю дату с датой в ячейке БД
Как сообразить такое? Есть сегодняшняя дата. Есть в БД строка и ячейка с датой. Как при соответствующей ситуациации мне получить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru