我想使用DBIx :: Class对SQLite3启用外键支持,以便在更新和删除时使用级联。我在文档中找到了这个http://search.cpan.org/dist/DBIx-Class/lib/DBIx/Class/Storage/DBI/SQLite.pm,但是在如何使用上却不太清楚。
这就是我在脚本中设置Schema.pm和连接字符串的方式。
# Schema.pm
package MyApp::Schema;
use base qw/DBIx::Class::Schema/;
use strict;
use warnings;
our $VERSION = '0.00001';
__PACKAGE__->load_namespaces();
__PACKAGE__->load_components(qw/Schema::Versioned/);
__PACKAGE__->upgrade_directory('sql/');
# connection string in script
use MyApp::Schema;
my $schema = MyApp::Schema->connect('dbi:SQLite:db/myapp.db');
谢谢,
最佳答案
都
my $schema = MyApp::Schema->connect(
'dbi:SQLite:db/myapp.db',
undef,
undef,
{
on_connect_do => 'PRAGMA foreign_keys = ON',
}
);
和
my $schema = MyApp::Schema->connect(
dsn => 'dbi:SQLite:db/myapp.db',
on_connect_do => 'PRAGMA foreign_keys = ON',
);
应该可以。
如评论中所述,您还可以使用
on_connect_call => 'use_foreign_keys',
代替
on_connect_do => 'PRAGMA foreign_keys = ON',
关于perl - DBIx::Class如何为SQLite启用PRAGMA foreign_keys?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15014643/