Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.05.2019, 15:35   #1
student772
Пользователь
 
Регистрация: 02.01.2019
Сообщений: 14
По умолчанию Заполнение таблицы

Делаю запрос на создание таблицы, синтаксис хромает, знаю, я начинающий

Код:
Create table Sdelki
(
	Nomer_scheta int not Null Primary Key Identity(1,1)  CHECK (Nomer_scheta BETWEEN 10000000 and 99999999),
	Type_instrumenta varchar(20) not Null,
	Nazvanie_instrumenta varchar(20) Not Null,
	foreign key (Type_instrumenta, Nazvanie_instrumenta) references Instruments(Type_instrumenta, Nazvanie_instrumenta) on delete cascade,
	datavremya_otkrytiya datetime Not Null default getdate(),
	datavremya_zakrytiya datetime Null,
	napravlenie_sdelki varchar(10) not Null default 'long' ,
	zena_otkrytiya money CHECK (zena_otkrytiya>0),
	kolichestvo real CHECK (kolichestvo>0),
	zena_zakrytiya money CHECK (zena_zakrytiya>0),
	pribyl as abs(zena_zakrytiya-zena_otkrytiya)*kolichestvo,
    CHECK (datavremya_zakrytiya > datavremya_otkrytiya),
	
);
Пытаюсь заполнить данными:
SET DATEFORMAT YMD

insert into Sdelki ( Type_instrumenta, Nazvanie_instrumenta, datavremya_otkrytiya, datavremya_zakrytiya, napravlenie_sdelki, zena_otkrytiya, kolichestvo, zena_zakrytiya)
values ('akzii', 'акция1', '20190120 19:39:51.217 ', '20190215 13:40:51.217 ', 'long', '700', '1', '450');

Не получается.
Конфликт инструкции INSERT с ограничением CHECK "CK__Sdelki__Nomer_sc__5CD6CB2B ". Конфликт произошел в базе данных "MyDB", таблица "dbo.Sdelki", column 'Nomer_scheta'.
Выполнение данной инструкции было прервано.

Проблема, так понимаю в:
Код:
	Nomer_scheta int not Null Primary Key Identity(1,1)  CHECK (Nomer_scheta BETWEEN 10000000 and 99999999),
Нужно чтобы это поле было 8 символов, ни больше, ни меньше, не знаю как по-другому задать такое ограничение

И, правильно ли задаю формат даты?
student772 вне форума Ответить с цитированием
Старый 20.05.2019, 16:06   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Identity(10000000,1) CHECK (Nomer_scheta <= 99999999)

Цитата:
SET DATEFORMAT YMD
Зачем?

Закладывание физического смысла, номера счета судя по названию, в автоинкрементный ключ плохо
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 20.05.2019 в 16:10.
Аватар вне форума Ответить с цитированием
Старый 20.05.2019, 20:52   #3
student772
Пользователь
 
Регистрация: 02.01.2019
Сообщений: 14
По умолчанию

Точно, спасибо
student772 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заполнение новой таблицы на основе таблицы из другого листа braz Microsoft Office Excel 0 05.03.2019 15:34
Заполнение таблицы Вовантус SQL, базы данных 21 20.05.2017 22:55
заполнение таблицы beginner09 Microsoft Office Access 4 09.05.2013 12:10
заполнение таблицы из бд Damhurz PHP 34 05.04.2013 14:38
Макрос: заполнение таблицы данными из другой таблицы с автоматическим добавлением строк yevgeniy.demidov Microsoft Office Excel 6 06.09.2012 15:27