0
PostgreSQL 9.5를 사용하고 있으며 특정 조건이 충족되는 경우에만 행을 삽입하는 쿼리를 만들려고합니다. 이미 그 회사에 연결 충분한 사람들이없는 한,삽입하기 전에 특정 조건이 충족되면 트랜잭션을 롤백합니다.
BEGIN;
>> WHAT SHOULD I DO ON THE FOLLOWING LINES?
>> I WANT TO ACCOMPLISH SOMETHING LIKE THIS:
IF (SELECT COUNT(*) FROM roles WHERE company_id = $(companyId)) + 1 >=
(SELECT max_count FROM companies WHERE id = $(companyId))
THEN ROLLBACK/THROW OR WHATEVER
<<
INSERT INTO users (user_id, ...) VALUES (...)
INSERT INTO roles (user_id, company_id) VALUES (...)
COMMIT;
따라서, 사용자가 만든 회사에 연결해야합니다 : (?)은 다음과 같이 보일 것이다. 나는 거래 내에서 그것을 가질 필요가있다. 그래서 누군가는 수표/갱신 사이에 "몰래 들어갈"수 없다.
이 쿼리를 작성하는 방법을 모르겠습니다. 도움이 필요하다!
죄송합니다 (테스트하고 볼 필요) 당신은 아마 다음과 같은 작업을 수행 할 수 있습니다
를 오류 메시지가 인상 아마, 당신은 단지 상태를 확인할 수 있으며,
TRUE
경우 만 다른INSERT
을 수행 postgresql에 있지만 BEGIN/COMMIT 내에서 IF 절을 사용할 수 없습니까? – Sten@Sten, 아마도 당신은 할 수 ... 시도하고 어떤 오류가 있는지보십시오. – Rahul
@Sten, 답변이 도움이되는지 확인해보십시오. 일부 구문 문제가있을 수 있지만 논리가 있어야합니다. – Rahul