> The same goes for Oracle, although you will indeed > introduce more issues into your code (most of which > revolve around inserting conditional code that > inserts the nextval of a sequence when creating > a new record... no big deal.
I don't use sequences myself... I'd love to... but until they're more widely supported I use other techniques... although moreover I tend to use varchar columns for primary keys and populate them with something similar to a GUID/UUID. There's another advantage to this in that I antiscipate plugins adding / installing "default values" in some of these tables, for instance, the Forum plugin will add a "Forum Moderator" role to the roles table, and the Members onTap plugin is designed in such a way that it can use a canonical name (i.e. "tap_forummoderator") instead of the default GUID/UUID-like string to identify the role it creates and eliminate the need to write extra code to check to see if such a record had already been added and/or what its ID was when created. > Plus you have to take care to adjust cfqueryparam so > it uses the null parameter when appropriate rather > than allowing an empty string). I thought this was necessary for all databases... > Writing for Access is a bit of a challenge. Off the top > of my head: > values like record IDs are returned with a single > decimal no matter what you do. Record ID 123 will > arrive from Access as 123.0 no matter what your > settings are in the db for the field. So as a > habit I fix() every value where this can be an issue. I never noticed that... though I usually format numbers when they're displayed anyway and don't display record ID's. I was going to say -- multiple outer joins use a syntax which is not compatible with other databases, but which is _required_ with Access. Moreover it's a nested syntax, so it's not "easy" to tweak the existing code to support it. I have a tag which converts my own syntax into the appropriate join syntax for each database (including Access nested joins and Oracle 8's proprietary outer-join syntax). The alternative of course is to try and avoid multiple outer joins by using alternative CF syntax. > Access will explode on contact with ANY date field > when you try to use cfqueryparam on it. None of the > cfsqltypes work so you have to write your code with > this in mind and protect yourself in other ways. Strange... I've been able to get cf_sql_timestamp to work... > Thats not so much, really, when it comes to supporting > Access. The only other element is I write auto-installers > for my system, which include table/index/sequence builders. > So I have to write Create Table statements for each platform, > as well as Alter Table statements for the upgraders. > The syntax for these varies quite a bit. I have a handfull of tags which generate the appropriate create-table / alter-table syntax for each database... As I mentioned, I avoid sequences, although iirc the tags do include them... So my installer only has one set of code for all db's and then the framework handles the individual variations. Saves me time in developing the installers. s. isaac dealey 954.522.6080 new epoch : isn't it time for a change? add features without fixtures with the onTap open source framework http://www.fusiontap.com http://coldfusion.sys-con.com/author/4806Dealey.htm ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| Logware (www.logware.us): a new and convenient web-based time tracking application. Start tracking and documenting hours spent on a project or with a client with Logware today. Try it for free with a 15 day trial account. http://www.houseoffusion.com/banners/view.cfm?bannerid=67 Message: http://www.houseoffusion.com/lists.cfm/link=i:4:208873 Archives: http://www.houseoffusion.com/cf_lists/threads.cfm/4 Subscription: http://www.houseoffusion.com/lists.cfm/link=s:4 Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4 Donations & Support: http://www.houseoffusion.com/tiny.cfm/54