User Database - Storing data in the Extra Properties table?

When using Database Authentication for Users, the Ignition system creates this ‘user_ex’ properties table:

All of the users in our facility have badge numbers, and I need to store them somewhere. I’d like to use this table rather than create another table with essentially the same purpose as this table.
Two questions:

  1. Is it OK to store my own custom user properties here (like ‘BadgeNo’, or is this intended for the ignition system’s own internal use (i.e. if I put them here is their a chance the system will modify/delete/etc. the records?
  2. If I can use this table, are there any ‘reserved’ property names I should avoid?
  3. Are there any built-in functions in Ignition to pull properties from this table? (e.g. system.user.getProperty() ) or will I need to create the queries myself?

Thanks,
Mike

you can add a column to that table.

Note that the table appears to be designed as a key value store so you could just as easily just add a row for BadgeNo instead of adding badge no to every row that is added for a user:

INSERT INTO Ign_Users_user_ex (user_id, prop_name, prop_value) VALUES(###, 'BadgeNo', '1829031-000')

That said, vendor prefixed tables are generally not super safe to modify as the vendor reserves the right to alter or even drop that table at their discretion.

Conversely, if you do modify the table, consider prefixing your columns with something the vendor is unlikely to overwrite like:

ALTER TABLE Ign_Users_user_ex ADD mschell_BadgeNo varchar(50);

Hello,

I’m trying to use those tables as well. Did you manage to retreive your extra properties ? I can’t figure how-to with the system.user.* methods.

Regards.

I just got of off the phone with tech support. I was told that the Extra Properties Query parameter doesn’t really do anything. To gain access to the properties that would be in that table you will have to query the database directly, so the Extra Properties Query is pretty useless. There are no scripts or methods available that will allow you to get to those properties.

The Contact Info Query functions the same way as the Extra Properties Query. The table associated with the Contact Info Query can have as many values as you want in it and they do not have to be actual contact info. So you can set the (key,value) pairs you wanted to use in the Extra Properties Query within the Contact Info Query, I found that you don’t have to explicitly name your columns to contact_type, contact_value or the name of your table to user_contact for the query to work.

The system.user.getUser scripting function has a method called getContactInfo(). This method will return a list all of the (key,value) pairs in the table provided to the Contact Info Query parameter. I’ve provided an example script below that will convert this list into a Python dictionary.

contactInfoList =  system.user.getUser('Database','snngeru').getContactInfo()
print dict((str(row).split(': ')[0],str(row).split(': ')[1]) for row in contactInfoList)