我正在使用 SQL Server 2008 R2、C# 和 ASP.Net。我有一个表,它有一个由票号组成的复合主键,以及该票在表中出现的次数。工单频率由 C# 代码计算:
VTTTickets.InsertParameters[0].DefaultValue = VTTTTicketNoBox.Text;
string CommString = "SELECT COUNT(*) FROM [Tickets] WHERE [Ticket_No] = " +
VTTTTicketNoBox.Text;
string ConnString = ConfigurationManager.ConnectionStrings[1].ConnectionString;
OdbcConnection Conn = new OdbcConnection(ConnString);
Conn.Open();
OdbcCommand FooCommand = newOdbcCommand(CommString,Conn);
int FooVal = Convert.ToInt32(FooCommand.ExecuteScalar()) + 1;
VTTTickets.InsertParameters[1].DefaultValue = Convert.ToString(FooVal);
VTTTTicketNoBox.Text = "";
Conn.Close();
Run Code Online (Sandbox Code Playgroud)
我的表约束/等代码
CONSTRAINT [PK_Tickets] PRIMARY KEY CLUSTERED
([Ticket_No] ASC, [Ticket_Sub_No] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = ON,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY], …Run Code Online (Sandbox Code Playgroud) c# asp.net foreign-keys sql-server-2008 composite-primary-key
我有以下表格定义 journal
CREATE TABLE "public"."journal" (
"id" "public"."inc_journal" NOT NULL,
"short_desc" varchar(20),
"description" varchar(1000),
"default_gl_account_id" int8,
"company_id" int2,
"creator_user_id" int4,
"created_date" timestamp(6),
"type" "public"."journal_type",
CONSTRAINT "journal_pkey" PRIMARY KEY ("id")
)
WITH (OIDS=FALSE)
;
Run Code Online (Sandbox Code Playgroud)
inc_journal 的 def 是一个像这样的序列:
CREATE SEQUENCE "public"."inc_journal"
INCREMENT 1
MINVALUE 1
MAXVALUE 4294967295
START 1
CACHE 1;
Run Code Online (Sandbox Code Playgroud)
我希望为它设置一个外键,如下所示:
ALTER TABLE "public"."entry"
ADD FOREIGN KEY ("journal_id") REFERENCES "public"."journal" ("id");
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时,我收到一个错误:
[Err] 错误:无法实现外键约束“entry_journal_id_fkey”
详细信息:键列“journal_id”和“id”的类型不兼容:整数和 inc_journal。
我如何摆脱这个错误?
我需要设置journal_id为 typeinc_journal吗?我仍然想插入null到该字段中,所以这似乎不是正确的选择。
我正在制作一个测试表格,ModelForm它有两个模型。
CountryEmail我正在创建基于Email模型的表单。该Country模型具有名称字段,其值由COUNTRIES列表给出。我想在 中显示名称字段,其中EmailForm包含所有COUNTRIES值。我必须使用外键吗?请指导。
我的模型看起来像这样:
COUNTRIES = (('IND', 'India'), ('PAK', 'Pakistan'), ('AMR', 'America'))
class Country(models.Model):
name = models.CharField(max_length=3, choices=COUNTRIES)
class Email(models.Model):
title = models.CharField(max_length=50)
country = models.ForeignKey('Country')
sender = models.EmailField(max_length=20)
date = models.DateTimeField()
text = models.CharField(max_length=20)
class EmailForm(ModelForm):
class Meta:
model = Email
Run Code Online (Sandbox Code Playgroud)
如果我从中生成一个表格。它显示了一个空白的下拉菜单。如何从列表中获取值?
我有与外键相关的表,我尝试通过SQL Server上的内连接准备一个视图来组合它们.我不知道是否使用内连接方式,但无论如何我无法得到我想要的东西.
表格如下(我有2个以上表格):
表1:
| ID | Bla Bla... |
Run Code Online (Sandbox Code Playgroud)
表2:
| ID | Table1ID | Bla Bla... |
Run Code Online (Sandbox Code Playgroud)
我试过的查询是这样的:
Select
Table1.ID, COUNT(Table2.ID) as FooCount
From
Table1
Inner Join
Table2 on Table2.Table1ID = Table1.ID
Run Code Online (Sandbox Code Playgroud)
我想看到的结果应该是这样的:
| ID | FooCount |
-----------------------
| 1 | 45 |
| 2 | 75 |
| 3 | 98 |
| 4 | 100 |
| 5 | 11 |
| 6 | 37 |
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我有一个Business和一个Category模型.
每个Business都有很多Categories通过暴露的集合(Category无视Business实体).
现在这是我的控制器动作:
[HttpPost]
[ValidateAntiForgeryToken]
private ActionResult Save(Business business)
{
//Context is a lazy-loaded property that returns a reference to the DbContext
//It's disposal is taken care of at the controller's Dispose override.
foreach (var category in business.Categories)
Context.Categories.Attach(category);
if (business.BusinessId > 0)
Context.Businesses.Attach(business);
else
Context.Businesses.Add(business);
Context.SaveChanges();
return RedirectToAction("Index");
}
Run Code Online (Sandbox Code Playgroud)
现在有几个business.Categories已经CategoryId设置为现有Category(缺少tho 的Title属性Category).
从服务器点击SaveChanges并重新加载后Business,Categories …
所以我正在学习Django并试图通过仅使用Django ORM函数来获取外键值.我有2个表:用户表(默认Django auth_user系统表)和包含student_id,user_id(FK)和nr_indeksu的学生表(它是包含学生特定信息的附加信息的数字).
class Student(models.Model):
user = models.ForeignKey(User)
nr_indeksu = models.BigIntegerField()
def __unicode__(self):
return unicode(self.user
Run Code Online (Sandbox Code Playgroud)
我想通过User模型获取nr_indeksu.换句话说,执行此查询(使用QuerySet):
SELECT nr_indeksu FROM auth_user
INNER JOIN courses_student on auth_user.id = courses_student.user_id;
Run Code Online (Sandbox Code Playgroud)
我尝试过使用select_related()函数:
u = User.objects.select_related().get(pk=2)
Run Code Online (Sandbox Code Playgroud)
但是当我尝试访问nr_indeksu时:
u.nr_indeksu
Run Code Online (Sandbox Code Playgroud)
我得到User对象没有属性的错误(这是有道理的,因为nr_indeksu在学生模型中,但我不能从用户那里获取它?)
我对数据库设计有一些疑问.
我有一个用于存储关系的通用表结构.
最近我重构了一些使用这种通用结构而不是直接Fk列的东西,但现在我不确定这是否真的是最好的主意.
原始架构:
+------------------+ +---------------------+ +----------------------+ | Book | | Note | | MetaParent | |------------------| |---------------------| |----------------------| | Id | | Id | | Id | | NoteId | | MetaParentId:(Null) | | MetaTableId | | +-------+ +----+ KeyValue | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------+ +---------------------+ +----------------------+
新架构
+------------------+ …
我在我的应用程序中使用SQLite数据库来存储测量数据.
它在项目中分组.这些表与外键互连,ON DELETE CASCADE用于处理链接.数据库看起来像这样:
所有外键引用的列都声明为
project_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT.
外键是这样声明的
FOREIGN KEY(project_id) REFERENCES Projects(project_id) ON DELETE CASCADE
现在我有1个项目,项目中有1个组,该组中有800个文件,每个文件大约有60个数据点.
删除组合DELETE FROM Groups WHERE project_id=1效果很好,但需要大约21秒,这对我的需求来说太长了.
我已将删除包装在一个Transaction中.
我是SQL和SQLite的极端新手.这个持续时间是正常的还是有办法加快速度?我需要删除该组以填写更新的值.在我的应用程序中,我只想将一个项目保留在内存中,所以只需删除整个数据库并从头开始填充它(虽然快得多,~1 sek)并不是一个真正的选择.
这些表是这样创建的:
'Create projects table
cmd.CommandText = "CREATE TABLE IF NOT EXISTS Projects ( ProjectID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, " & _
"name TEXT NOT NULL, comment TEXT, date DATETIME2, diameter FLOAT(53), thickness FLOAT(53) );"
'Create Groups table
cmd.CommandText &= vbNewline …Run Code Online (Sandbox Code Playgroud) 我在向后引用外键方面有些挣扎peewee。考虑以下代码:
import peewee as pw
db = pw.SqliteDatabase(':memory:')
class Parent(pw.Model):
name = pw.CharField()
class Meta:
database = db
class Child(pw.Model):
name = pw.CharField()
parent = pw.ForeignKeyField(Parent, related_name="kid")
class Meta:
database = db
db.create_tables([Parent, Child])
bob = Parent.create(name="Bob")
alice = Child.create(name="Alice", parent=bob)
Run Code Online (Sandbox Code Playgroud)
可以与Bob的孩子接触bob.kid,这可以给我一个机会SelectQuery。但是,根据设计,我知道任何一个Parent都只能有一个Child。然后可以使用访问该孩子bob.kid[0]。
我希望能够通过简单地调用而不是Child从a 访问。无需进一步修改类就可以实现吗?Parentbob.kidbob.kid[0]Parent
我的网站上有多个表单可以工作并将信息保存到我的PostgreSQL数据库中.我正在尝试创建一个表单来保存我的Set Model的信息:
class Set(models.Model):
settitle = models.CharField("Title", max_length=50)
setdescrip = models.CharField("Description", max_length=50)
action = models.ForeignKey(Action)
actorder = models.IntegerField("Order number")
Run Code Online (Sandbox Code Playgroud)
Set Form看起来像这样.我正在使用ModelChoiceField从Action模型中提取Action名称字段列表,它在表单上显示为选择下拉列表
class SetForm(ModelForm):
class Meta:
model = Set
fields = ['settitle', 'setdescrip', 'action', 'actorder']
action = forms.ModelChoiceField(queryset = Action.objects.values_list('name', flat=True), to_field_name="id")
Run Code Online (Sandbox Code Playgroud)
createset的视图如下:
def createset(request):
if not request.user.is_authenticated():
return redirect('%s?next=%s' % (settings.LOGIN_URL, request.path))
elif request.method == "GET":
#create the object - Setform
form = SetForm;
#pass into it
return render(request,'app/createForm.html', { 'form':form })
elif "cancel" in request.POST:
return HttpResponseRedirect('/actions')
elif request.method …Run Code Online (Sandbox Code Playgroud) foreign-keys ×10
django ×3
python ×3
c# ×2
sql ×2
asp.net ×1
count ×1
database ×1
django-forms ×1
join ×1
many-to-many ×1
modelform ×1
models ×1
orm ×1
peewee ×1
postgresql ×1
save ×1
sequence ×1
sqlite ×1
t-sql ×1