powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Процедура внесения новой записи
20 сообщений из 20, страница 1 из 1
Процедура внесения новой записи
    #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
Процедура внесения новой записи
    #38845022
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RasinПодскажите что не так...
Забей, для лабы сойдёт. Всё равно программистом тебе не работать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Процедура внесения новой записи
    #38845023
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
во первых не count(*) а max(id)+1
во вторых представьте что два запроса одновременно будут вычислять максимум. Оба получат одинаковое значение - будет конфликт.
...
Рейтинг: 0 / 0
Процедура внесения новой записи
    #38845026
Rasin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То есть max(id)+1 подходит?
Если два запроса придут почти одновременно. Не будет конфликта?
...
Рейтинг: 0 / 0
Процедура внесения новой записи
    #38845027
Rasin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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




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

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




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

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

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

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

Процедура кстати плохая -- там меняется первичный ключ таблицы. Т.е. по какому полю ищется -- то поле и меняется.
Это плохо, как правило. в 90% случаев.
...
Рейтинг: 0 / 0
Процедура внесения новой записи
    #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
Процедура внесения новой записи
    #38845841
Ы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ы
Гость
Rasin,

ты бы сказал сначала, что нужно сделать: переименовать должность (все дизайнеры теперь именуются художниками) или перевести человека на другую должность (конкретный Петров из дизайнеров перводится в художники). Глядишь, сам бы и понял, как надо.
...
Рейтинг: 0 / 0
Процедура внесения новой записи
    #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]