add a constraint for table relation to check if the anchor of a debitor has a partner relation
This commit is contained in:
		
				
					committed by
					
						 Dev und Test fuer hsadminng
						Dev und Test fuer hsadminng
					
				
			
			
				
	
			
			
			
						parent
						
							e6b32eda88
						
					
				
				
					commit
					d8dc5655f3
				
			| @@ -32,6 +32,7 @@ create table if not exists hs_office.relation | ||||
|  | ||||
| -- ============================================================================ | ||||
| --changeset michael.hoennig:hs-office-relation-unique-constraints endDelimiter:--// | ||||
| --validCheckSum: 9:79e93a47a62e44c661cd8d414626e49d | ||||
| -- ---------------------------------------------------------------------------- | ||||
|  | ||||
| CREATE UNIQUE INDEX unique_relation_with_mark | ||||
| @@ -49,6 +50,36 @@ CREATE UNIQUE INDEX unique_partner_relation | ||||
| --// | ||||
|  | ||||
|  | ||||
| -- ===================================================================================== | ||||
| --changeset timotheus.pokorra:hs-office-relation-debitor-anchor-CONSTRAINT endDelimiter:--// | ||||
| -- ------------------------------------------------------------------------------------- | ||||
|  | ||||
| -- | ||||
| -- Name: relation_check_debitor_anchor_partner(RelationType, uuid); Type: FUNCTION; Schema: hs_office; Owner: test | ||||
| -- | ||||
|  | ||||
| CREATE FUNCTION hs_office.relation_check_debitor_anchor_partner(mytype hs_office.RelationType, debitoranchoruuid uuid) RETURNS boolean | ||||
|     LANGUAGE plpgsql | ||||
|     AS ' | ||||
| declare | ||||
|     countPartner integer; | ||||
| begin | ||||
|     if mytype = ''DEBITOR'' then | ||||
|         SELECT COUNT(*) FROM hs_office.relation r | ||||
|             WHERE r.type = ''PARTNER'' AND r.holderuuid = debitoranchoruuid | ||||
|             INTO countPartner; | ||||
|         if countPartner < 1 then | ||||
|             raise exception ''[400] invalid debitor relation: anchor person must have a PARTNER relation''; | ||||
|         end if; | ||||
|     end if; | ||||
|     return true; | ||||
| end; '; | ||||
|  | ||||
| ALTER TABLE hs_office.relation ADD CONSTRAINT check_debitor_anchor_person CHECK (hs_office.relation_check_debitor_anchor_partner(type, anchorUuid)); | ||||
|  | ||||
| --// | ||||
|  | ||||
|  | ||||
| -- ============================================================================ | ||||
| --changeset michael.hoennig:hs-office-relation-MAIN-TABLE-JOURNAL endDelimiter:--// | ||||
| -- ---------------------------------------------------------------------------- | ||||
|   | ||||
		Reference in New Issue
	
	Block a user