U bevindt zich nu op een technische pagina over de software Mercator. Deze pagina bevat specifieke informatie die bestemd is voor professionals van de software Mercator. Wenst u naar algemenere informatie over Mercator door te gaan?


   Deze vraag niet meer stellen

Installeer een extra relatie in de database

0000002931     -      09-09-2019

De gegevensdatabase van mercator is open. Daarom is het mogelijk om deze aan te passen aan de zakelijke behoeften die niet standaard worden meegeleverd. Dit kunnen bijvoorbeeld extra beperkingen zijn. We laten hier zien hoe u een nieuwe relatie (foreign key) kan toevoegen in tussen LIGNES_V (verkoopslijnen van het commercieel beheer) en DEST. (4e informatiebestand)

Standaard bestaat deze relatie LIGNES_V.ID_DESTIN -> DEST.D_ID niet in de Mercator-database. Dit betekent dat LIGNES_V.ID_DESTIN mogelijk leeg kan zijn, of dat dit een waarde bevat die niet bestaat in de DEST-tabel. Dit gedrag moet gewijzigd worden, zodat Mercator null gebruikt bij het bewaren van het documenten uit het commercieel beheer voor lijnen die geen waarde hebben voor het veld ID_DESTIN.

Dit SQL-script maakt deze relatie aan:

exec SP_ALTER_COLUMN 'LIGNES_V','ID_DESTIN','char(10) null'
exec SP_ALTER_COLUMN_DROP_DEFAULT 'LIGNES_V','ID_DESTIN'
update LIGNES_V set id_destin=null where id_destin=''
/* update LIGNES_V set id_destin=null where not exists(select * from DEST where d_id=id_destin) */
alter table dbo.LIGNES_V add constraint FK_LIGNES_V_DEST FOREIGN KEY (id_destin) references dest (d_id)

De voorlaatste lijn is commentaar. Deze zal de waarden verwijderen die niet bestaan.

null accepteert, dit type wordt niet geassocieerd met een default value. Omdat aan deze drie voorwaarden is voldaan, zal Mercator lege waarden automatisch vervangen door null.

Belangrijke opmerking:: Het is belangrijk om de queries van de eventuele rapporten aan te passen die dit type syntax zouden gebruiken:

where lignes_v.id_destin = '' 

want deze voorwaarde is niet gelijk aan:

where lignes_v.id_destin is null

 

In dit ontwikkelstadium worden enkel velden uit LIGNES_V/LIGNES_A vervangen door null als er aan deze 3 voorwaarden wordt voldaan.