Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Процедура внесения новой записи / 20 сообщений из 20, страница 1 из 1
28.12.2014, 21:44
    #38845019
Rasin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура внесения новой записи
CREATE PROCEDURE createStructuralSubdivision @NameSubdivision AS nvarchar(MAX)
AS
INSERT INTO StructuralSubdivision
SELECT (COUNT(*)+1) AS idSubdivision, @NameSubdivision AS NameSubdivision
FROM StructuralSubdivision


(COUNT(*)+1)

Мне сказали, что опасная процедура, ибо при большом количестве запросов... Поставит только один. Ну я вообще не понял, что мне пытались объяснить...
Подскажите что не так...
...
Рейтинг: 0 / 0
28.12.2014, 22:06
    #38845022
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура внесения новой записи
RasinПодскажите что не так...
Забей, для лабы сойдёт. Всё равно программистом тебе не работать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
28.12.2014, 22:08
    #38845023
SERG1257
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура внесения новой записи
во первых не count(*) а max(id)+1
во вторых представьте что два запроса одновременно будут вычислять максимум. Оба получат одинаковое значение - будет конфликт.
...
Рейтинг: 0 / 0
28.12.2014, 22:13
    #38845026
Rasin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура внесения новой записи
То есть max(id)+1 подходит?
Если два запроса придут почти одновременно. Не будет конфликта?
...
Рейтинг: 0 / 0
28.12.2014, 22:13
    #38845027
Rasin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура внесения новой записи
Dimitry Sibiryakov,

Как раз таки не подходит.
...
Рейтинг: 0 / 0
28.12.2014, 22:14
    #38845029
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура внесения новой записи
RasinНу я вообще не понял, что мне пытались объяснить...

Видимо, тебе пытались объяснить, что правильно подобная (ошибки уже указали в топике) процедура будет
работать только на уровне изоляции SERIALIZABLE.
Т.е. в режиме "всем разойтись, я сейчас запись добавлять буду... И пока не довавлю -- всем не двигаться!"
...
Рейтинг: 0 / 0
28.12.2014, 22:15
    #38845030
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура внесения новой записи
RasinDimitry Sibiryakov,

Как раз таки не подходит.

должен быть max(id)+1
...
Рейтинг: 0 / 0
28.12.2014, 22:16
    #38845032
Rasin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура внесения новой записи
MasterZiv,

А как сделать так, чтобы не расходились ? :D
...
Рейтинг: 0 / 0
28.12.2014, 22:16
    #38845033
Rasin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура внесения новой записи
Все понял. Спасибо большое :)
...
Рейтинг: 0 / 0
28.12.2014, 22:20
    #38845034
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура внесения новой записи
RasinMasterZiv,

А как сделать так, чтобы не расходились ? :D

А чтобы не расходились, надо использовать всяческие умные генераторы идентификаторов:

sequence, identity, autoid, и подобные.
Подробности см. в документации по твоей СУБД.
...
Рейтинг: 0 / 0
28.12.2014, 22:25
    #38845036
Rasin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура внесения новой записи
MasterZiv,
Ну а вообще генераторы. Это сложная вещь?
Я так понимаю надо ставить штуку, чтобы ориентировалась по времени. Какой там запрос пришел(отправили) раньше, тот и ставить.
...
Рейтинг: 0 / 0
28.12.2014, 22:42
    #38845041
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура внесения новой записи
RasinКак раз таки не подходит.
А другого выхода нет. Если ты весь семестр маялся дурью и о предмете не знаешь даже
название, то ничего другого как выпрашивать у препода хотя бы троечку тебе не светит.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
28.12.2014, 22:42
    #38845042
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура внесения новой записи
RasinMasterZiv,
Ну а вообще генераторы. Это сложная вещь?


Нет, не сложная.

RasinЯ так понимаю надо ставить штуку, чтобы ориентировалась по времени. Какой там запрос пришел(отправили) раньше, тот и ставить.

Нет, понимаешь ты неправильно.
Не надо никакие штуки испльзовать, надо испльзовать родные для твоей СУБД нетранзакционные генераторы.

Можешь сказать, какая у тебя СУБД, я тебя ткну носом в страницу документации, которую нужно прочитать.
...
Рейтинг: 0 / 0
28.12.2014, 22:44
    #38845043
Rasin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура внесения новой записи
MasterZiv, ткните носом пожалуйста. Ибо я не понимаю, что надо делать...

Microsoft SQL server 2008
...
Рейтинг: 0 / 0
28.12.2014, 22:56
    #38845051
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура внесения новой записи
Rasin,

http://www.w3schools.com/sql/sql_autoincrement.asp -- тут общее, для всех СУБД. Точнее для нескольких.

http://msdn.microsoft.com/ru-ru/library/ms186775.aspx -- тут конкретно для MS SQLServer.
...
Рейтинг: 0 / 0
28.12.2014, 23:04
    #38845054
Rasin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура внесения новой записи
MasterZiv, а еще не подскажите? пока не ушли.

Процедура обновления названия должности




Просто мне кажется , что будет меня всех дизайнеров на художников. А надо одну , допустим, должность сотрудника поменять.
Как сделать?
...
Рейтинг: 0 / 0
28.12.2014, 23:08
    #38845055
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура внесения новой записи
RasinMasterZiv, а еще не подскажите? пока не ушли.

Процедура обновления названия должности




Просто мне кажется , что будет меня всех дизайнеров на художников. А надо одну , допустим, должность сотрудника поменять.
Как сделать?

Ты зря не прикладываешь код непосредственно в сообщение.

Я не понял, что я должен подсказать.

Там есть процедура, и есть её вызов. Ну и что же тут подсказывать ?

Процедура кстати плохая -- там меняется первичный ключ таблицы. Т.е. по какому полю ищется -- то поле и меняется.
Это плохо, как правило. в 90% случаев.
...
Рейтинг: 0 / 0
28.12.2014, 23:13
    #38845058
Rasin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура внесения новой записи
MasterZiv,
CREATE PROCEDURE ChangeJobTitle @jobTitle1 as nvarchar (MAX),
@jobTitle2 as nvarchar (MAX)
AS
UPDATE dbo.Post set jobTitle = @jobTitle2
WHERE jobTitle = @jobTitle1


EXEC changeJobTitle @jobTitle1 = 'Дизайнер',
@jobTitle2 = 'Художник'
...
Рейтинг: 0 / 0
29.12.2014, 16:26
    #38845841
Ы
Ы
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура внесения новой записи
Rasin,

ты бы сказал сначала, что нужно сделать: переименовать должность (все дизайнеры теперь именуются художниками) или перевести человека на другую должность (конкретный Петров из дизайнеров перводится в художники). Глядишь, сам бы и понял, как надо.
...
Рейтинг: 0 / 0
29.12.2014, 17:28
    #38845910
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура внесения новой записи
RasinMasterZiv,
CREATE PROCEDURE ChangeJobTitle @jobTitle1 as nvarchar (MAX),
@jobTitle2 as nvarchar (MAX)
AS
UPDATE dbo.Post set jobTitle = @jobTitle2
WHERE jobTitle = @jobTitle1


EXEC changeJobTitle @jobTitle1 = 'Дизайнер',
@jobTitle2 = 'Художник'


Уже лучше, но можно без спойлеров.
Когда твоё сообщение состоит только из текста программ, зачем спойлеры ?
Даже если было бы что-то ещё, программы твои короткие, зачем спойлер ?
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Процедура внесения новой записи / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]