powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Ограничение на количество записей в таблице
5 сообщений из 5, страница 1 из 1
Ограничение на количество записей в таблице
    #38797567
Viacheslav_mihalich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток,

Подскажите пожалуйста: можно ли с помощью встроенных инструментов (CONSTRAINT, INDEX) наложить ограничение на следующую таблицу DOCTOR_PHOTOS, чтобы у каждого DOCTOR_ID было бы не больше 10 PHOTO?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
CREATE TABLE "DOCTOR_PHOTOS"
(
  "ID" bigint NOT NULL DEFAULT nextval('"DOCTOR_PHOTOS_seq"'::regclass),
  "DOCTOR_ID" bigint NOT NULL,
  "PHOTO" character varying(64),
  "IS_PRIMARY" boolean,
  "EXPIRATION_TIME" timestamp without time zone,
  "IS_ICON" boolean,
  CONSTRAINT "DOCTOR_PHOTOS_pkey" PRIMARY KEY ("ID"),
  CONSTRAINT "DOCTOR_ID3" FOREIGN KEY ("DOCTOR_ID")
      REFERENCES "DOCTORS" ("ID") MATCH SIMPLE
      ON UPDATE CASCADE ON DELETE CASCADE,
  CONSTRAINT positive_doctor_id CHECK ("DOCTOR_ID" > 0)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE "DOCTOR_PHOTOS"
  OWNER TO postgres;

-- Index: "fki_DOCTOR_ID3"

-- DROP INDEX "fki_DOCTOR_ID3";

CREATE INDEX "fki_DOCTOR_ID3"
  ON "DOCTOR_PHOTOS"
  USING btree
  ("DOCTOR_ID");

-- Index: original_is_icon_photo

-- DROP INDEX original_is_icon_photo;

CREATE UNIQUE INDEX original_is_icon_photo
  ON "DOCTOR_PHOTOS"
  USING btree
  ("DOCTOR_ID", "IS_ICON")
  WHERE "IS_ICON" = true;

-- Index: original_no_photo_is_icon_false

-- DROP INDEX original_no_photo_is_icon_false;

CREATE UNIQUE INDEX original_no_photo_is_icon_false
  ON "DOCTOR_PHOTOS"
  USING btree
  ("DOCTOR_ID", "PHOTO" COLLATE pg_catalog."default")
  WHERE "PHOTO"::text = 'No_photo'::text AND "IS_ICON" = false;

-- Index: original_primary_photo

-- DROP INDEX original_primary_photo;

CREATE UNIQUE INDEX original_primary_photo
  ON "DOCTOR_PHOTOS"
  USING btree
  ("DOCTOR_ID", "IS_PRIMARY")
  WHERE "IS_PRIMARY" = true;
...
Рейтинг: 0 / 0
Ограничение на количество записей в таблице
    #38797644
?Ы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Viacheslav_mihalich,

заведите photo_num NOT NULL IN (0,9)
и unique на ("DOCTOR_ID",photo_num)

-- и всё.

как вариант -- добавить ("DOCTOR_ID",("ID"%10)) -- и мучиться с тем, что вставка фото будет срабатывать не на каждом nextval('"DOCTOR_PHOTOS_seq"'::regclass)


иначе -- через check + ф-ю, подсчитывающую count(). не слишком жестко
...
Рейтинг: 0 / 0
Ограничение на количество записей в таблице
    #38797771
Viacheslav_mihalich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
?Ы,

Спасибо.

Да, это как вариант, но хотелось бы обойтись без добавления дополнительных полей.

пока что вижу решение в написании хранимки на добавление фотки доктора с ручной проверкой на лимит в 10 фоток для каждого доктора. До этого добавлял фото просто через insert без хранимки.
...
Рейтинг: 0 / 0
Ограничение на количество записей в таблице
    #38797855
V&N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
V&N
Гость
Viacheslav_mihalich , ну так триггер прицепите на before insert fo each row.
...
Рейтинг: 0 / 0
Ограничение на количество записей в таблице
    #38797866
неонка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
V&N Viacheslav_mihalich , ну так триггер прицепите на before insert fo each row.зачем триггер, да ?
чека по ф-ии достаточно (унутре у него, у чека, неонка, т.е. тот же триггер, но зато ручками следить не надо)
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Ограничение на количество записей в таблице
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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