In RDBO, each object represents a single, uniquely identified row in a table. Therefore, there must be some way to uniquely identify a row in a table. Any unique key will do, even if it's not specified as a primary key constraint in the database. But RDBO will need something that it calls a primary key. You can pick one of the unique keys and tell RDBO that it is the primary key, for example.
(You can actually create RDBO-derived classes that front tables without unique or primary keys, but the load() and save() object methods will not work as designed, for what I hope are obvious reasons.)
| [reply] |
Can Rose::DB use a primary key that spans multiple columns?
Also, does anyone know if of a support matrix comparing
supported features of roseDB with DBIC and CDBI?
| [reply] |
Well, I found the answer to the first part of
my question tucked away in the tutorial:
The table must have a primary key, and may have zero or more unique keys. The primary key and each unique key may contain multiple columns.
Also, if you are desparate there is even a workaround for not having a primary key:
If the table has a multi-column primary key or does not use a column type that supports auto-generated values, you can define a custom primary key generator function using the primary_key_generator method of the Rose::DB::Object::Metadata-derived object that contains the metadata for this class.
| [reply] |