NAV / BC Tabellen mit SQL NULL Feldern

Veröffentlicht von

Für Tabellen mit kombiniertem Zugriff aus NAV und einer externen Applikation kann es vorkommen, dass Tabellenfelder mit NULL benötigt werden.

In NAV erstelle Tabellenfelder haben immer die Eigenschaft „Not NULL“ und beim schreiben eines Datensatzes werden die Felder auch immer mit einem leeren Inhalt gefüllt.

Die gemeinsam genutzte Tabelle mit den gewünschten Feldern wird als erstes in NAV erstellt.

Dann werden die gewünschten Felder per SQL Script geändert

USE NAVPROD	
GO

ALTER TABLE [dbo].[IORH_ORDER_HEADER] ALTER COLUMN IORH_ALTERNATIVE_DEPOTS NVARCHAR(250) NULL;
ALTER TABLE [dbo].[IORH_ORDER_HEADER] ALTER COLUMN IORH_DELVRY_EXTID1 NVARCHAR(50) NULL;
ALTER TABLE [dbo].[IORH_ORDER_HEADER] ALTER COLUMN IORH_DELVRY_EARLIEST_DATETIME NVARCHAR(32) NULL;
ALTER TABLE [dbo].[IORH_ORDER_HEADER] ALTER COLUMN IORH_DELVRY_LATEST_DATETIME NVARCHAR(32) NULL;
GO

Als nächstes muss ein SQL Trigger auf die Tabelle erstellt werden. Mit diesem werden dann die Inserts auf die Tabelle nachträglich geändert und die gewünschten Felder werden „ausgenullt“.

USE [NAVPROD]
GO
/****** Object:  Trigger [dbo].[IORH_ORDER_HEADER_ClearOnInsert]    Script Date: 22.10.2020 14:07:46 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
ALTER TRIGGER [dbo].[IORH_ORDER_HEADER_ClearOnInsert] 
   ON  [dbo].[IORH_ORDER_HEADER] 
   AFTER INSERT
AS 
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.

   	SET NOCOUNT ON;

    Update [dbo].[IORH_ORDER_HEADER] set IORH_ALTERNATIVE_DEPOTS = NULL,
           IORH_DELVRY_EXTID1 = NULL,
           IORH_DELVRY_EARLIEST_DATETIME = NULL,
           IORH_DELVRY_LATEST_DATETIME = NULL
    WHERE EXISTS (SELECT * FROM inserted WHERE [DBO].[IORH_ORDER_HEADER].[IORH_IMPH_REFERENCE] = inserted.[IORH_IMPH_REFERENCE])
    SET NOCOUNT OFF
    -- Insert statements for trigger here

END