Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 как написать триггер на сумму в table Zapis  [new]
Sabrina
Member

Откуда:
Сообщений: 12
+
SET NOCOUNT ON
GO

USE master
GO
if exists (select * from sysdatabases where name='Salon')
		drop database Salon
go

DECLARE @device_directory NVARCHAR(520)
SELECT @device_directory = SUBSTRING(filename, 1, CHARINDEX(N'master.mdf', LOWER(filename)) - 1)
FROM master.dbo.sysaltfiles WHERE dbid = 1 AND fileid = 1

EXECUTE (N'CREATE DATABASE Salon
  ON PRIMARY (NAME = N''Salon'', FILENAME = N''' + @device_directory + N'Salon.mdf'')
  LOG ON (NAME = N''Salon_log'',  FILENAME = N''' + @device_directory + N'Salon.ldf'')')
go

exec sp_dboption 'Salon','trunc. log on chkpt.','true'
exec sp_dboption 'Salon','select into/bulkcopy','true'
GO

use Salon;
go

---------------------------
----создание таблиц-----

Create table klient(
kl_ID integer  identity(1,1) not null Primary key,
kl_fam char(40),
kl_imya char(20),
kl_otch char(40),
kl_tel bigint default (null)
)
go

Create table Kategor_usluga
(
Kateg_us_ID integer not null Primary key,
us_klass Char (40)
)
GO

Create table usluga
(
us_ID integer not null PRIMARY Key ,
us_nazv char (60),
us_cena int,
Kateg_us_ID integer not null Foreign Key references Kategor_usluga(Kateg_us_ID)
)
go

Create table dolzhnost
(
Dol_ID integer not null Primary key,
Nazv_dol char(40)
)
go

Create table Kategor
(
Kateg_ID integer not null Primary key,
Kateg_klass char(30)
)
GO

Create table Dni_nedeli
( dni_nedeli_id integer not null Primary key,
dn_name char(12)
)
GO

Create table Grafik_raboty
(
Grafik_ID integer not null Primary key,
Grafik_name char(10)
)
GO

create table Grafik_po_dnyam
( 
dni_nedeli_id       int NOT NULL REFERENCES
Dni_nedeli(dni_nedeli_id ) ON DELETE CASCADE,
Grafik_ID       int NOT NULL REFERENCES      Grafik_raboty (Grafik_ID),
CONSTRAINT  PK_Grafik_po_dnyam  PRIMARY KEY (dni_nedeli_id, Grafik_ID)
   ) ;


create table SOTRUDNIKI
(
Sotr_ID integer not null Primary key,
Sotr_fam char(30),
Sotr_imya char(15),
Sotr_otch char(30),
Dol_ID integer not null Foreign Key references dolzhnost(Dol_ID),
Sotr_adr char(30),
Sotr_tel char(11),
Sotr_udv char(9),
Kateg_ID integer not null Foreign Key references Kategor(Kateg_ID),
Grafik_ID integer not null Foreign Key references Grafik_raboty(Grafik_ID )
 )
go

create table Uslug_sotr(
usmas_ID integer identity (1,1) not null Primary key,
Sotr_ID int Foreign Key references SOTRUDNIKI (Sotr_ID),
us_ID int Foreign Key references usluga (us_ID),
)
go
--drop table Zapis
create table Zapis
(
Zapis_ID integer  not null Primary key,
zapis_data date,
kl_ID integer not null Foreign Key references klient(kl_ID),
Summa bigint null
)
--alter table Zapis drop
--column vypolneno;

--alter table Zapis
--add Summa bigint null;

GO
--uslovie na datu
alter table dbo.Zapis  add CONSTRAINT CK_Zapis_zapis_data check 
(zapis_data >=cast (convert (char(8),GETDATE(), 112)as date))
go
--drop TABLE Zapis_uslugu
create TABLE Zapis_uslugu ( 
Zapis_ID       int NOT NULL REFERENCES
Zapis(Zapis_ID ) ON DELETE CASCADE,
usmas_ID   int  NOT NULL REFERENCES  Uslug_sotr (usmas_ID),
vrem_nach time NOT NULL,
vrem_kon time NOT NULL,
cena int NOT NULL,
vypolneno char(5)  NOT NULL
CONSTRAINT  Zapis_na_uslugu  PRIMARY KEY (Zapis_ID , usmas_ID )
       ) ;
       
go


Сообщение было отредактировано: 4 май 14, 21:07
4 май 14, 20:26    [15970180]     Ответить | Цитировать Сообщить модератору
 Re: Помогите срочно!!!тема салон красоты,как написать триггер на сумму в table Zapis  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
"тема салон красоты"

да, вы по адресу, мы здесь все красивые
4 май 14, 20:36    [15970210]     Ответить | Цитировать Сообщить модератору
 Re: Помогите срочно!!!тема салон красоты,как написать триггер на сумму в table Zapis  [new]
Sabrina
Member

Откуда:
Сообщений: 12
Winnipuh,Ну раз я по адресу I need a help!!!
4 май 14, 20:54    [15970263]     Ответить | Цитировать Сообщить модератору
 Re: Помогите срочно!!!тема салон красоты,как написать триггер на сумму в table Zapis  [new]
igr_ok
Member

Откуда:
Сообщений: 170
Sabrina,

Триггеры сейчас не в моде. Если вы скажете, для чего вам он нужен, мы вам подберем что-то аналогичное, но тоже очень красивое
4 май 14, 20:59    [15970280]     Ответить | Цитировать Сообщить модератору
 Re: как написать триггер на сумму в table Zapis  [new]
Sabrina
Member

Откуда:
Сообщений: 12
igr_ok,Ахах)))мне нужно посчитать сумму в табл записи)есть таблица услуги а в ней цена услуги и usluga_id,но они не связаны...как можно это сделать?
4 май 14, 21:23    [15970351]     Ответить | Цитировать Сообщить модератору
 Re: как написать триггер на сумму в table Zapis  [new]
igr_ok
Member

Откуда:
Сообщений: 170
Знаете,Sabrina, если у вас для хранения суммы используется тип данных bigint, то салон вполне в состоянии нанять квалифицированного специалиста, а не заставлять сотрудников самих разрабатывать БД.
4 май 14, 23:23    [15970855]     Ответить | Цитировать Сообщить модератору
 Re: как написать триггер на сумму в table Zapis  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
Sabrina, Вы подождите немного, обязательно найдется добрый саморитянин и Вам поможет, просто с девушками всегда весело но не всегда хватает терпения дожить до логического конца топика.
А я пока наводящие вопросы задам.
Вам в какой момент времени и в каком месте нужна сумма?
Почему заказ никак не всязан с услугами и что мешает связать? Я увидел только связь через сотрудника но это многие ко многим.
Почему именно триггер?
Почему не считать сумму на этапе формирования заказа?
4 май 14, 23:40    [15970932]     Ответить | Цитировать Сообщить модератору
 Re: как написать триггер на сумму в table Zapis  [new]
Glory
Member

Откуда:
Сообщений: 104751
http://msdn.microsoft.com/ru-ru/library/ms189799.aspx
Пример В.Использование триггера DML AFTER для принудительного применения бизнес-правил между таблицами PurchaseOrderHeader и Vendor
5 май 14, 11:19    [15972268]     Ответить | Цитировать Сообщить модератору
 Re: как написать триггер на сумму в table Zapis  [new]
Sabrina
Member

Откуда:
Сообщений: 12
WarAnt,Вот мне и нужно чтобы при записи клиента сразу была его сумма(в таблице записи есть сумма) которая берет данные у табл услуги.Таблица запись(где сумма) связана с таблицей услуги(цена услуги и us_ID) через таблицы Zapis_uslugu и Uslug_sotr.
5 май 14, 16:28    [15974914]     Ответить | Цитировать Сообщить модератору
 Re: как написать триггер на сумму в table Zapis  [new]
Glory
Member

Откуда:
Сообщений: 104751
Sabrina
нужно чтобы при записи клиента сразу была его сумма(в таблице записи есть сумма) которая берет данные у табл услуги.Таблица запись(где сумма) связана с таблицей услуги(цена услуги и us_ID) через таблицы Zapis_uslugu и Uslug_sotr.

Вы хотите, чтобы при INSERT-е в таблицу klient в таблице Zapis получилась сумма всех услуг что ли ?
5 май 14, 16:35    [15974960]     Ответить | Цитировать Сообщить модератору
 Re: как написать триггер на сумму в table Zapis  [new]
Sabrina
Member

Откуда:
Сообщений: 12
Glory,клиент записывается на несколько услуг(например массаж и покраска волос), а у этих услуг есть цена.Вот мне нужно посчитать сумму каждого записанного клиента.
5 май 14, 16:42    [15975003]     Ответить | Цитировать Сообщить модератору
 Re: как написать триггер на сумму в table Zapis  [new]
Glory
Member

Откуда:
Сообщений: 104751
Sabrina
,клиент записывается на несколько услуг(например массаж и покраска волос), а у этих услуг есть цена.Вот мне нужно посчитать сумму каждого записанного клиента.

Вы понимате, что триггер - это код, который срабатывает при событиях INSERT/UPDATE/DELETE для одной конкртеной таблицы ?
Если вам нужно "посчитать сумму каждого записанного клиента", то причем тут триггер ?
5 май 14, 16:44    [15975014]     Ответить | Цитировать Сообщить модератору
 Re: как написать триггер на сумму в table Zapis  [new]
Sabrina
Member

Откуда:
Сообщений: 12
Glory,я ведь буду добавлять и удалять клиентов)но если не триггер как сделать по другому?функция?
5 май 14, 16:58    [15975118]     Ответить | Цитировать Сообщить модератору
 Re: как написать триггер на сумму в table Zapis  [new]
Glory
Member

Откуда:
Сообщений: 104751
Sabrina
я ведь буду добавлять и удалять клиентов

Интересно, а как при добавлении клиента уже могут существовать услуги, которые он выбрал ?
И зачем что-то считать при удалении клиента ? Разве после удаления клиента выбранные им услуги остаются ?

Sabrina
как сделать по другому?функция?

Сначала на бумажке пишут нормальную постановку задачи.
А потом выбирают способ реализации.
5 май 14, 17:02    [15975150]     Ответить | Цитировать Сообщить модератору
 Re: как написать триггер на сумму в table Zapis  [new]
igr_ok
Member

Откуда:
Сообщений: 170
Sabrina
Glory,клиент записывается на несколько услуг(например массаж и покраска волос), а у этих услуг есть цена.Вот мне нужно посчитать сумму каждого записанного клиента.
Это нужно делать sql-запросом на этапе вывода данных в приложении. Таблица zapis вообще не нужна, она дублирует уже имеющиеся данные.
5 май 14, 17:52    [15975374]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить