I created the example in my head and not verified the code.
Thanks, I had guessed that might have been it. But, with the "brute force" I referred to, I had done exactly that (dm.sqlConn) and then got the next error "Cannot start a Transaction within a Transaction."
Clearly this is all beyond my current knowledge of using SQL directly. Up until recently I had been using ZEOS and was isolated from the complexities of underlying SQL. But, ZEOS 7.0/7.1/7.2 was proving to be buggy and unreliable, so I decided to bite the bullet and fall back to the bare SQLdb.
I guess I will live with the "UNIQUE" approach at Post and roll back on error. I have set the "Name" DBEdit to UpperCase so that will take care of the "Dave" "DAVE" and "dave ," issue with "UNIQUE."
I appreciate the attempts to help, but I really have no desire to do a full-course in SQL as I am Retired and probably will not use it again for years. I was just trying to emulate what I was used to doing with Win/Delphi/IB/ADO etc. I am rewriting an email program I wrote in Win/Delphi and I will most-likely be the only one using it, so will live with the irritation of the duplicates check at Post as opposed to DBEdit1.OnExit.
I felt sure this had already been well covered and several code snippets might be available. But my hals-day searching proved otherwise. It seems most programmers are comfortable using the UNIQUE-at-Post approach. Not a user-friendly approach at all, making them wait until all the other stuff has been entered to tell them the Name was not acceptable.
Thanks to all, anyway.