Sounds like you need an "on demand" serial number. Instead of generating a serial number just because a new record is created, you would seem to need a number that is generated only when certain user actions are taken.
Use two tables and two auto-entered serial numbers.
Say your current table is called "Data". Define __pkDataID as an auto-entered serial number in Data and use it where needed as your primary key. For your "on demand" ID field, define a second table, SerialNumbers with two number fields:
SerialNumber (auto-entered serial number)
link SerialNumbers to Data in a relationship like this:
Data::__pkDataID = SerialNumbers::_fkDataID
Enable "allow creation of records via this relationship" for SerialNumbers in the above relationship.
Add the SerialNumbers::SerialnNumber field to your Data layout to show the assigned serial number if one has been assigned. This is your "secondID" field.
Set up the OnObjectSave script trigger on FirstID to perform this simple script:
If [Not IsEmpty ( Data::FirstID ) ]
Set Field [SerialNumbers::_fkDataID ; Data::__pkDataID ]
This script will use the "allow creation..." option to create a new record in SerialNumbers, but only if such a related record does not already exist for the current record in Data. The creation of the related record, in turn, generates the serial number value you need as your "secondID".
For an explanation of the notation that I am using, see the first post of: Common Forum Relationship and Field Notations Explained