Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2014.08.03;
Скачать: [xml.tar.bz2];

Вниз

Считаю, что странное нарушение целостности какое-то..   Найти похожие ветки 

 
OW ©   (2011-03-14 11:17) [0]

Запрос

UPDATE SUBJECT_PHONE
SET
 ID_SUBJECT = :ID_SUBJECT,
 PHONE = :PHONE,
 PHONE_NAME = :PHONE_NAME,
 DATE_BEGIN = :DATE_BEGIN
WHERE
 ID_SUBJECT = :OLD_ID_SUBJECT

:ID_SUBJECT(FLOAT,IN)=1624664
:PHONE(VARCHAR[10],IN)="8342474312"
:PHONE_NAME(VARCHAR[2],IN)="56"
:DATE_BEGIN(IN)=<NULL>
:OLD_ID_SUBJECT(FLOAT,IN)=1624664

Дает ошибку
Error: ORA-00001: unique constraint (ISS.UK_SP_PH_SUB_BEGIN) violated

Таблица

CREATE TABLE "ISS"."SUBJECT_PHONE"
  ( "ID_SUBJECT" NUMBER,
"PHONE" VARCHAR2(11),
"PHONE_NAME" VARCHAR2(1000),
"DATE_BEGIN" DATE,
"DATE_END" DATE,

 ALTER TABLE "ISS"."SUBJECT_PHONE" ADD CONSTRAINT "UK_SP_PH_SUB_BEGIN" UNIQUE ("ID_SUBJECT", "PHONE", "DATE_BEGIN")


Проверяю:

select
*
from SUBJECT_PHONE SP
where
SP.PHONE = "8342474312"
and
SP.ID_SUBJECT = 1624664

1 запись выбрана.

Я её же и апдейчу,
почему не дает?


 
OW ©   (2011-03-14 11:22) [1]


> SP.PHONE = "8342474312"
> and
> SP.ID_SUBJECT = 1624664
>
> 1 запись выбрана.
>
> Я её же и апдейчу,

т.е. ни SP.PHONE, ни SP.ID_SUBJECT не меняется.
А уже только они определяют в таблице только одну запись


 
Sergey13 ©   (2011-03-14 11:24) [2]

> :DATE_BEGIN(IN)=<NULL>
А если не нулл попробовать?


 
OW ©   (2011-03-14 11:37) [3]

UPDATE SUBJECT_PHONE
SET
-- ID_SUBJECT = 1624664, -- и так тоже
PHONE = "8342474312",
PHONE_NAME = "Некий",
DATE_BEGIN = to_date("01.03.2011")
WHERE
ID_SUBJECT = 1624664

тоже самое..Error: ORA-00001: unique constraint (ISS.UK_SP_PH_SUB_BEGIN) violated


 
OW ©   (2011-03-14 11:41) [4]

полное определение таблицы такое

CREATE TABLE "ISS"."SUBJECT_PHONE"
  ( "ID_SUBJECT" NUMBER,
"PHONE" VARCHAR2(11),
"PHONE_NAME" VARCHAR2(1000),
"DATE_BEGIN" DATE,
"DATE_END" DATE,
"ORDER_SORT" NUMBER,
"ALTERNATE_ADDRESS" VARCHAR2(1000),
"UPDATE_STATUS" NUMBER,
"IN_09" VARCHAR2(1) DEFAULT "Y" NOT NULL ENABLE,
"IS_FREE" VARCHAR2(1) DEFAULT "N" NOT NULL ENABLE,
"IS_PARALLEL" VARCHAR2(1) DEFAULT "N" NOT NULL ENABLE,
"PAID_INFORM" VARCHAR2(1) DEFAULT "Y" NOT NULL ENABLE,
"PCOMMENT" VARCHAR2(200),
"ADDRESS" VARCHAR2(500),
 CONSTRAINT "UK_SP_PH_SUB_BEGIN" UNIQUE ("ID_SUBJECT", "PHONE", "DATE_BEGIN")
 USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING COMPUTE STATISTICS
 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
 TABLESPACE "SPRAVKA"  ENABLE,
 SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS,
 SUPPLEMENTAL LOG DATA (FOREIGN KEY) COLUMNS,
 SUPPLEMENTAL LOG DATA (UNIQUE INDEX) COLUMNS,
 CONSTRAINT "FK_SP_ID_SUBJECT" FOREIGN KEY ("ID_SUBJECT")
  REFERENCES "ISS"."SUBJECT" ("ID_SUBJECT") ENABLE
  ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS NOLOGGING
 STORAGE(INITIAL 65536 NEXT 8192 MINEXTENTS 1 MAXEXTENTS 2147483645
 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
 TABLESPACE "SPRAVKA" ;

 CREATE INDEX "ISS"."IX_SP_ID_SUBJECT" ON "ISS"."SUBJECT_PHONE" ("ID_SUBJECT")
 PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING COMPUTE STATISTICS
 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
 TABLESPACE "SPRAVKA" ;

 CREATE INDEX "ISS"."IX_SP_PHONE" ON "ISS"."SUBJECT_PHONE" ("PHONE")
 PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING COMPUTE STATISTICS
 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
 TABLESPACE "SPRAVKA" ;

 CREATE UNIQUE INDEX "ISS"."UK_SP_PH_SUB_BEGIN" ON "ISS"."SUBJECT_PHONE" ("ID_SUBJECT", "PHONE", "DATE_BEGIN")
 PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING COMPUTE STATISTICS
 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
 TABLESPACE "SPRAVKA" ;

 ALTER TABLE "ISS"."SUBJECT_PHONE" ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;

 ALTER TABLE "ISS"."SUBJECT_PHONE" ADD SUPPLEMENTAL LOG DATA (FOREIGN KEY) COLUMNS;

 ALTER TABLE "ISS"."SUBJECT_PHONE" ADD SUPPLEMENTAL LOG DATA (UNIQUE INDEX) COLUMNS;

 ALTER TABLE "ISS"."SUBJECT_PHONE" MODIFY ("IN_09" NOT NULL ENABLE);

 ALTER TABLE "ISS"."SUBJECT_PHONE" MODIFY ("IS_FREE" NOT NULL ENABLE);

 ALTER TABLE "ISS"."SUBJECT_PHONE" MODIFY ("IS_PARALLEL" NOT NULL ENABLE);

 ALTER TABLE "ISS"."SUBJECT_PHONE" MODIFY ("PAID_INFORM" NOT NULL ENABLE);

 ALTER TABLE "ISS"."SUBJECT_PHONE" ADD CONSTRAINT "UK_SP_PH_SUB_BEGIN" UNIQUE ("ID_SUBJECT", "PHONE", "DATE_BEGIN")
 USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING COMPUTE STATISTICS
 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
 TABLESPACE "SPRAVKA"  ENABLE;


 
Вариант   (2011-03-14 11:43) [5]


> OW ©   (14.03.11 11:37) [3]


select count(*) as CNT  from SUBJECT_PHONE
WHERE
ID_SUBJECT = 1624664 - сколько показывает?


 
OW ©   (2011-03-14 11:48) [6]


> select count(*) as CNT  from SUBJECT_PHONE
> WHERE
> ID_SUBJECT = 1624664 - сколько показывает?


6

да-да, тут, кажется, сейчас..


 
OW ©   (2011-03-14 11:51) [7]

ну да, логично. Все правильно
UPDATE SUBJECT_PHONE
SET
ID_SUBJECT = :ID_SUBJECT,
PHONE = :PHONE,
PHONE_NAME = :PHONE_NAME,
DATE_BEGIN = :DATE_BEGIN
WHERE
ID_SUBJECT = :OLD_ID_SUBJECT
and PHONE = :OLD_PHONE
Так должно быть, конечно.

Согласен, cтупил :-)


 
OW ©   (2011-03-14 11:53) [8]

Даже так:
UPDATE SUBJECT_PHONE
SET
 ID_SUBJECT = :ID_SUBJECT,
--  PHONE = :PHONE,      { TODO : Сделать в диалог }
 PHONE_NAME = :PHONE_NAME,
 DATE_BEGIN = :DATE_BEGIN,
 DATE_END = :DATE_END,
 ORDER_SORT = :ORDER_SORT,
 ALTERNATE_ADDRESS = :ALTERNATE_ADDRESS,
 UPDATE_STATUS = :UPDATE_STATUS,
 IN_09 = :IN_09,
 IS_FREE = :IS_FREE,
 IS_PARALLEL = :IS_PARALLEL,
 PAID_INFORM = :PAID_INFORM,
 PCOMMENT = :PCOMMENT,
 ADDRESS = :ADDRESS
WHERE
 ID_SUBJECT = :OLD_ID_SUBJECT
 and PHONE = :OLD_PHONE


 
Кщд   (2011-03-14 11:55) [9]

>OW ©   (14.03.11 11:17)  
1. select * from v$version

2. покажите результат:

select ID_SUBJECT, PHONE, DATE_BEGIN
from SUBJECT_PHONE SP
where
          SP.PHONE = "8342474312"
          and SP.ID_SUBJECT = 1624664


 
OW ©   (2011-03-14 12:02) [10]

Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bi
PL/SQL Release 10.2.0.5.0 - Production
CORE 10.2.0.5.0 Production
TNS for Linux: Version 10.2.0.5.0 - Production
NLSRTL Version 10.2.0.5.0 - Production

1624664 8342474312 NULL

Да в общем все решилось,
всем спасибо



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2014.08.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.035 c
6-1273529957
RizZ.ru
2010-05-11 02:19
2014.08.03
Прямая передача файлов в Delphi7


2-1379532154
Павел
2013-09-18 23:22
2014.08.03
TList


3-1300090667
OW
2011-03-14 11:17
2014.08.03
Считаю, что странное нарушение целостности какое-то..


2-1379581711
Вася
2013-09-19 13:08
2014.08.03
получить по имени переменной ее значение


15-1389186800
Aleks2014
2014-01-08 17:13
2014.08.03
Как восстановить настройки Editor options-Color?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский