What is the best way to check if a value in a table has changed when writing to a database?
If you need combination of (tag_value,tag_type) to be unique , the only guaranteed way to do it is to add unique constraint or unique index, e.g. 
alter table  html_tag add constraint UQ_HTML_TAG_COMPOSITE UNIQUE(tag_value, tag_type) .  In addition you can modify INSERT statement so it will not insert a record if it already exists. Something like 

INSERT INTO html_tag(tag_value,tag_type) 
SELECT 'dba.stackexchange' as tag_value, 'link' as tag_type FROM DUAL 
WHERE NOT EXISTS 
( 
  SELECT NULL FROM  html_tag a WHERE a.tag_value = 'dba.stackexchange' 
  and a.tag_type = 'link'
)


will greatly reduce (not 100% though due to concurrency) chances of inserting duplicate records.  You  may also try using MERGE. However, no matter how you insert the record, the only way to completely avoid duplicates is to enforce it on DB level by adding unique constraint /index.