how to overcome these type of issues where null value inserted into primary key not null column in table how to overcome these type of issues where null value inserted into primary key not null column in table
As was stated in the comment


  You're not inserting a NULL value, you're inserting ""


If you want to prevent an empty string ("") and NULLs from being used as ai_name, you need a trigger. In your particular case, you need a BEFORE INSERT trigger:

DELIMITER $$

CREATE TRIGGER check_for_blank_ai_name
BEFORE INSERT ON actionitems
FOR EACH ROW  
BEGIN  
  DECLARE dummy INT;
  IF ( IFNULL(NEW.ai_name,'') = '' ) THEN  
    SELECT 'Any Message' INTO dummy FROM mysql.user WHERE used = 'anything';
  END IF;
END $$

DELIMITER ;


The line of code

SELECT 'Any Message' INTO dummy FROM mysql.user WHERE used = 'anything';


will break. That's by design. This will prevent the INSERT from occurring.

I have written triggers that break midstream before in my other posts:


Jun 09, 2013 : BEFORE INSERT trigger in MySQL
Dec 11, 2012 : Comparing dates in a BEFORE INSERT trigger
Dec 23, 2011 : check constraint does not work?
Apr 25, 2011 : Trigger in MySQL to prevent insertion


Give it a Try !!!