In the template that processes the form, why not place a query before the INSERT code that checks the database for the information on the form, then if it exists, bypass the INSERT and display a message. Something like:
<cfif IsDefined("form.ID"

>
<cfquery name="CheckTheID" datasource="dsname" type="ODBC">
SELECT ID FROM YourTable WHERE ID = '#Form.ID#'
</cfquery>
<cfif #CheckID.RecordCount# GT '0'>
<cfset Message = "Hey, dimbulb, you can't do this twice.">
<cfelse>
<CFQUERY NAME="insert_stuff" datasource="dsname" type="ODBC">
INSERT SQL STUFF
</CFQUERY>
<cfset Message = "Thanks, love. We'll be in touch.">
</cfif>
</cfif>
<cfoutput>
#Message#
</cfoutput>
NOTE: This assumes you are placing the unique ID in the form as a hidden field. I use CreateUUID() to set up the ID numbers in the form for just this purpose. Also, it allows you to preview data from the db right on the processing template.
Try it. You'll like it.