In essence the logic of transactional-update can be summarized as follows:
SNAPSHOT_ID=`snapper create --read-write -p -d "Snapshot Update"`
zypper -R ${SNAPSHOT_DIR} up|patch|dup|...
btrfs property set ${SNAPSHOT_DIR} ro true
btrfs subvol set-default ${SNAPSHOT_DIR}
systemctl reboot