INSERT ... ON DUPLICATE KEY UPDATEcode with the more appropriate
INSERT ... WHERE NOT EXISTScode instead.
Also, I realized today that, in an effort to streamline the process of joining and then using AboutTh.is, Members don't necessarily have to set their primary and additional languages in advance. I wrote some triggers which make the reasonable assumption that the first language the Member uses to express an Opinion is their primary language, and if they use additional Opinion languages after that, those are added to the Member's Fluency set. The Member will be able to configure these later, as well, but the point is that they won't have to.
Of course, even reporting a language at all won't ever be a requirement, (and thus stored internally as
undas per ISO 639-3), but it'll sure be rather helpful. :-)
In a related tangent, is the ISO 639-3 generic code
zxx(for non-language sounds such as those made by animals) an example of speciesism, i.e., prejudice against non-humans? :-)