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

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

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.10.2012, 17:34   #1
kate158
Форумчанин
 
Регистрация: 01.08.2008
Сообщений: 383
По умолчанию обработка ошибки добавления дубликата

SQL SERVER 2000
В таблице есть уникальный индекс, как в ХП сделать показ сообщения "Вы ввели дубликат!", когда пользователь добавляет идентичную запись?
kate158 вне форума Ответить с цитированием
Старый 02.10.2012, 19:06   #2
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

на firebird это будет примерно так:
Код:
SELECT COUNT(id) FROM table WHERE id=:p_id INTO :kol_id; // ищем указаную запись в БД
if :kol_id<>0 then exception <имя исключения>; // исключение заранее создано в БД
правда это все примитивно, т.к. нжно еще сделать проверку на добавление\редактирование ... соотв условие немного изменится, но принцып тот же)
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 02.10.2012, 21:24   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
когда пользователь добавляет идентичную запись?
Насколько идентичную?
Известен список полей, который должен сравниваться?
Если да то в ХП просто пропиши select count(*) from ... where список условий
И если он вернет не ноль то запись такая уже есть.
Но вообще-то это отслеживаться другими методами.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.10.2012, 09:18   #4
kate158
Форумчанин
 
Регистрация: 01.08.2008
Сообщений: 383
По умолчанию

id_docs____ id_note_____name
2__________562_______act.doc
7__________562_______act1.doc
1__________562_______книги - копия.txt
так вот в поле name юзер может добавить одинаковую запись, но id_docs будет разным
и проверка мне нужна не на том уровне, когда дубликат уже добавлен,а в процессе добавления, когда вылазит исключение sql server!

чтобы вот такое сообщение не вылазило, а показывалось более красивое типа "вы ввели дубликат!"

Последний раз редактировалось kate158; 03.10.2012 в 09:28.
kate158 вне форума Ответить с цитированием
Старый 03.10.2012, 09:47   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

В триггере на вставку (возможно и на обновление если допускается редактирование Name) проверяйте запросом на предмет уникальности и сообщение при необходимости примерно так
Код:
raiserror 13001 'Ошибка: тра-ля-ля'
rollback transaction
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.10.2012, 10:27   #6
kate158
Форумчанин
 
Регистрация: 01.08.2008
Сообщений: 383
По умолчанию

а если без триггера, как такую проверку можно сделать в ХП ?в общем сама справилась
Код:
SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS ON 
GO
CREATE PROCEDURE dbo.ADD_DOCS
@NAME varchar(100), --НАЗВАНИЕ ФАЙЛА
@ID_NOTE INT --НОМЕР СЗ

AS

DECLARE @err int
if exists (
   select *
   from docs
      where name = @name
     ) 
begin
  raiserror (N'Вы вводите дубликат!', 16,-1) 
end

INSERT INTO DOCS(ID_NOTE,NAME)
VALUES (@ID_NOTE,@NAME) 

GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

Последний раз редактировалось kate158; 03.10.2012 в 12:26.
kate158 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка ошибки vlkr Microsoft Office Access 1 17.08.2012 21:51
Обработка ошибки vlkr Microsoft Office Access 2 11.07.2012 15:45
Win 7. Создание дубликата учетной записи с огран. правами k3rn3l Операционные системы общие вопросы 0 03.01.2012 21:17
Обработка ошибки N/A cerberochek Microsoft Office Excel 2 02.09.2010 18:11
Обработка ошибки iggor C++ Builder 6 13.06.2010 20:49