Я думав і читав і все таки знайшов вирішення цього питання))) Треба юзати користувацькі функції для таких цілей. Створюємо свою mysql функцію котра буде закріплена за вибраною базою даних. Нехай таблиця буде така:
CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `login` varchar(50) DEFAULT NULL,
  `password` varchar(50) DEFAULT NULL,
  `email` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 ;
Фунцію назвемо myInsert, якщо ви не знаєте як додавати власні функції в mysql то читати тут і тут.
І так функція
DELIMITER //
CREATE FUNCTION myInsert(l VARCHAR(20), p VARCHAR(20), email VARCHAR(20))
  RETURNS VARCHAR(20)
  BEGIN
    DECLARE s VARCHAR(20);
    IF ( (SELECT IF( (SELECT id FROM users WHERE login =  l), 1, 0 ) ) = 1) THEN SET s = 'exists';
    ELSE INSERT INTO USERS VALUES (' ', l, p, email); SET s = 'good insert';
    END IF;
    RETURN s;
  END //
DELIMITER ;
Фунція приймає три параметри і якщо не виконується умова ( (SELECT IF( (SELECT id FROM users WHERE login =  l), 1, 0 ) ) = 1) функція вносить запис в базу і повертає good insert, в іншому випадку функція повертає exists;
Перевіряти ось так:
SELECT myInsert(
 'taraskin',  'qwerty',  'tarasko@сайт-злодій'
);
/* Результат
myInsert( 'taraskin', 'qwerty', 'tarasko@сайт-злодій' )
good insert
*/
//Пробуємо ще разок
SELECT myInsert(
 'taraskin',  'qwerty',  'tarasko@сайт-злодій'
);
/* Результат
myInsert( 'taraskin', 'qwerty', 'tarasko@сайт-злодій' )
exists
*/
Так що переробляйте під свою таблицю і користуйтеся. Доречі, функції видаляються так: