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

Откуда:
Сообщений: 8
Здравствуйте, помогите пожалуйста написать триггер, который будит проставлять количество часов по предметам, если заранее не известно какие предметы будут храниться в БД. Помогите разобраться!
16 мар 20, 18:31    [22100133]     Ответить | Цитировать Сообщить модератору
 Re: Триггер с условиями  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36686
Модератор: Выполните пункт 4 и пункт 6.
16 мар 20, 18:36    [22100140]     Ответить | Цитировать Сообщить модератору
 Re: Триггер с условиями  [new]
Илья Сухенко
Member

Откуда:
Сообщений: 8
Таблицы, которые нужно использовать:
Нагрузка (ID, СотрудникID, КлассID, ПредметID, Часы)
Дисциплины (ПредметID, Название предмета)

Версия программы: Microsoft SQL Server 2008 (SP1) - 10.0.2531.0 (X64) Mar 29 2009 10:11:52 Copyright (c) 1988-2008 Microsoft Corporation Express Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
16 мар 20, 18:49    [22100148]     Ответить | Цитировать Сообщить модератору
 Re: Триггер с условиями  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36686
Модератор: Илья Сухенко,

И вот это тоже:

- скрипты заполнения этих таблиц тестовыми данными;
- описание желаемого результата на примере тестовых данных.
16 мар 20, 18:51    [22100150]     Ответить | Цитировать Сообщить модератору
 Re: Триггер с условиями  [new]
Илья Сухенко
Member

Откуда:
Сообщений: 8
Создание таблицы Нагрузка:
CREATE TABLE [dbo].[Нагрузка](
	[ID] [int] NOT NULL,
	[СотрудникID] [int] NOT NULL,
	[КлассID] [nchar](5) NOT NULL,
	[ПредметID] [int] NOT NULL,
	[Часы] [int] NOT NULL,
 CONSTRAINT [PK_Нагрузка] PRIMARY KEY CLUSTERED 
(
	[ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]


Заполнение данными таблицы Нагрузка
INSERT INTO [education].[dbo].[Нагрузка]
           ([ID]
           ,[СотрудникID]
           ,[КлассID]
           ,[ПредметID]
           ,[Часы])
     VALUES
           (1, '1А', 1, 0),
           (2, '2А', 2, 0)
GO


Создание таблицы Дисциплины:
CREATE TABLE [dbo].[Дисциплины](
	[ПредметID] [int] NOT NULL,
	[Название предмета] [nchar](30) NOT NULL,
 CONSTRAINT [PK_Дисциплины_1] PRIMARY KEY CLUSTERED 
(
	[ПредметID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO


Заполнение таблицы Дисциплины данными:
INSERT INTO [education].[dbo].[Дисциплины]
           ([ПредметID]
           ,[Название предмета])
     VALUES
           (1, Хор),
           (2, МХК)
GO


Желаемый результат на картинке
Поле часы должно заполняться автоматически триггером

К сообщению приложен файл. Размер - 9Kb


Сообщение было отредактировано: 16 мар 20, 19:02
16 мар 20, 19:02    [22100155]     Ответить | Цитировать Сообщить модератору
 Re: Триггер с условиями  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36686
Т.е. автоматом должно 120 проставляться что ли?
16 мар 20, 19:09    [22100157]     Ответить | Цитировать Сообщить модератору
 Re: Триггер с условиями  [new]
Илья Сухенко
Member

Откуда:
Сообщений: 8
Гавриленко Сергей Алексеевич,
Да, только для предмета с ID = 1
16 мар 20, 19:22    [22100165]     Ответить | Цитировать Сообщить модератору
 Re: Триггер с условиями  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36686
Илья Сухенко,

А для предмета с ID = 2? А ID = 3?
Опишите нормально вашу задачу, зачем партизаните?
16 мар 20, 19:23    [22100166]     Ответить | Цитировать Сообщить модератору
 Re: Триггер с условиями  [new]
Илья Сухенко
Member

Откуда:
Сообщений: 8
Гавриленко Сергей Алексеевич,

Прошу прощение за мою тупость.
Что должен делать триггер:
есть предмет с ID = 1 количество часов по этому предмету для 1 курса = 120 часов.
есть предмет с таким же ID, только для 2 курса количество часов = 56 часов
есть предмет с ID = 2 количество часов по этому предмету для 1 курса = 50 часов
есть предмет с таким же ID, только для 2 курса количество часов = 54 часов, предметы можно добавлять новые, т.е. нам заранее не известно количество дисциплин.

К сообщению приложен файл. Размер - 14Kb
16 мар 20, 19:41    [22100176]     Ответить | Цитировать Сообщить модератору
 Re: Триггер с условиями  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30701
Илья Сухенко
Что должен делать триггер:
есть предмет с ID = 1 количество часов по этому предмету для 1 курса = 120 часов.
есть предмет с таким же ID, только для 2 курса количество часов = 56 часов
есть предмет с ID = 2 количество часов по этому предмету для 1 курса = 50 часов
есть предмет с таким же ID, только для 2 курса количество часов = 54 часов, предметы можно добавлять новые, т.е. нам заранее не известно количество дисциплин.
В таком случае делают и заполняют данными таблицу, при чём тут триггер?
16 мар 20, 22:23    [22100226]     Ответить | Цитировать Сообщить модератору
 Re: Триггер с условиями  [new]
aleks222
Member

Откуда:
Сообщений: 846
alexeyvg
Илья Сухенко
Что должен делать триггер:
есть предмет с ID = 1 количество часов по этому предмету для 1 курса = 120 часов.
есть предмет с таким же ID, только для 2 курса количество часов = 56 часов
есть предмет с ID = 2 количество часов по этому предмету для 1 курса = 50 часов
есть предмет с таким же ID, только для 2 курса количество часов = 54 часов, предметы можно добавлять новые, т.е. нам заранее не известно количество дисциплин.
В таком случае делают и заполняют данными таблицу, при чём тут триггер?


1. Это студент.
2. Любой студент ленив и необразован по определению.
3. Он слыхал, что триггеры все могут сделать за нас.
4. Вот откуда ноги триггера растут.
17 мар 20, 07:58    [22100322]     Ответить | Цитировать Сообщить модератору
 Re: Триггер с условиями  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30701
aleks222,

В данном случае студент не заказывает курсовик/лабу, а задаёт вопросы, пытается разобраться. Молодец.
Возможно, мой ответ ему поможет. Либо решить задачу, либо правильно сформулировать вопросы.
17 мар 20, 08:52    [22100334]     Ответить | Цитировать Сообщить модератору
 Re: Триггер с условиями  [new]
aleks222
Member

Откуда:
Сообщений: 846
alexeyvg
aleks222,

В данном случае студент не заказывает курсовик/лабу, а задаёт вопросы, пытается разобраться. Молодец.
Возможно, мой ответ ему поможет. Либо решить задачу, либо правильно сформулировать вопросы.

Ну ты оптимист.
У него НИГДЕ нету 120 в таблицах.
Но он хочет, чтобы 120 чудесным образом вставилось...
17 мар 20, 09:30    [22100354]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить