В Oracle вы, вероятно, будете использовать:
MERGE INTO b USING
(SELECT name, color
FROM a) src
ON (src.name = b.name AND color = src.color)
WHEN NOT MATCHED THEN
INSERT (name, color)
VALUES (src.name, src.color);
Если ваша таблица имеет первичный ключ (у вас действительно есть таблицы без такового?), Например, NAME, и вы хотите вставить или обновить, в зависимости от наличия записи в таблице B, вы должны использовать:
MERGE INTO b USING
(SELECT name, color
FROM a) src
ON (src.name = b.name)
WHEN NOT MATCHED THEN
INSERT (name, color)
VALUES (src.name, src.color)
WHEN MATCHED THEN
UPDATE
SET color = src.color;
Я так понимаю, что в SQL Server также есть оператор MERGE или аналогичный.