Olivier
2013-Jun-03 16:20 UTC
[asterisk-users] Is uniqueid/sequence a safe CDR table primary key ?
Hi, When dealing with CDR SQL tables, I always added an auto-incremented cdr_id key as a primary key, just in case provided uniqueid key went wrong. Now I'm facing a situation where I need to insert into a database's table and from the dialplan, a reference to the CDR record which is currently processed. So my questions are: 1. Can uniqueid/sequence (or uniqueid/sequence/calldate) bundle be safely used as CDR's table primary key (ie I cannot have any uniqueid/sequence combination from one CDR record to match a past uniqueid/sequence combination) ? 2. Suggestions ? Regards -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.digium.com/pipermail/asterisk-users/attachments/20130603/6d5bd33a/attachment.htm>
Matthew Jordan
2013-Jun-03 16:58 UTC
[asterisk-users] Is uniqueid/sequence a safe CDR table primary key ?
On 06/03/2013 11:20 AM, Olivier wrote:> Hi, > > When dealing with CDR SQL tables, I always added an auto-incremented > cdr_id key as a primary key, just in case provided uniqueid key went wrong. > > Now I'm facing a situation where I need to insert into a database's > table and from the dialplan, a reference to the CDR record which is > currently processed. > > So my questions are: > > 1. Can uniqueid/sequence (or uniqueid/sequence/calldate) bundle be > safely used as CDR's table primary key (ie I cannot have any > uniqueid/sequence combination from one CDR record to match a past > uniqueid/sequence combination) ?Possibly. Things to keep in mind: * You can run into uniqueid collisions across multiple systems if you do not specify a system name in asterisk.conf or do not specify a unique system name in asterisk.conf. * You can run into uniqueid collisions if your system clock goes backwards for any reason (the uniqueid for a channel happens to use a timestamp for its uniqueness) Whether or not this is unique enough will be completely dependent on your overall system configuration. In general, the recommended combination that *should* uniquely specify a CDR (when configured correctly) is linkedid (which should be enabled and added to your schema), uniqueid, and sequence number, with the asterisk system name specified. -- Matthew Jordan Digium, Inc. | Engineering Manager 445 Jan Davis Drive NW - Huntsville, AL 35806 - USA Check us out at: http://digium.com & http://asterisk.org