vendor/doctrine/dbal/lib/Doctrine/DBAL/Id/TableGenerator.php
(开头部分) 2KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
<?php
/*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the MIT license. For more information, see
* <http://www.doctrine-project.org>.
*/
namespace Doctrine\DBAL\Id;
use Doctrine\DBAL\DriverManager;
use Doctrine\DBAL\Connection;
/**
* Table ID Generator for those poor languages that are missing sequences.
*
* WARNING: The Table Id Generator clones a second independent database
* connection to work correctly. This means using the generator requests that
* generate IDs will have two open database connections. This is necessary to
* be safe from transaction failures in the main connection. Make sure to only
* ever use one TableGenerator otherwise you end up with many connections.
*
* TableID Generator does not work with SQLite.
*
* The TableGenerator does not take care of creating the SQL Table itself. You
* should look at the `TableGeneratorSchemaVisitor` to do this for you.
* Otherwise the schema for a table looks like:
*
* CREATE sequences (
* sequence_name VARCHAR(255) NOT NULL,
* sequence_value INT NOT NULL DEFAULT '1',
* sequence_increment_by INT NOT NULL DEFAULT '1',
* PRIMARY KEY (table_name)
* );
*
* Technically this generator works as follows:
*
* 1. Use a robust transaction serialization level.
* 2. Open transaction
* 3. Acquire a read lock on the table row (SELECT .. FOR UPDATE)
* 4. Increment current value by one and write back to database
* 5. Commit transaction
*
* If you are using a sequence_increment_by value that is larger than one the
* ID Generator will keep incrementing values until it hits the incrementation
* gap before issuing another query.
*
* If no row is present for a given sequence a new one will be created with the
* default values 'value' = 1 and 'increment_by' = 1
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。