我有一个表,其主键在其他几个表中使用,并有几个外键到其他表.
CREATE TABLE location (
locationID INT NOT NULL AUTO_INCREMENT PRIMARY KEY
...
) ENGINE = InnoDB;
CREATE TABLE assignment (
assignmentID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
locationID INT NOT NULL,
FOREIGN KEY locationIDX (locationID) REFERENCES location (locationID)
...
) ENGINE = InnoDB;
CREATE TABLE assignmentStuff (
...
assignmentID INT NOT NULL,
FOREIGN KEY assignmentIDX (assignmentID) REFERENCES assignment (assignmentID)
) ENGINE = InnoDB;
Run Code Online (Sandbox Code Playgroud)
问题是,当我试图删除其中一个外键列(即locationIDX)时,它会给我一个错误.
"ERROR 1025(HY000):重命名时出错"
如何在不发生此错误的情况下删除上面的分配表中的列?
我有一个名为的现有表Persion.在这个表中,我有5列:
当我创建这个表时,我设置PersionId并Pname作为主键.
我现在想在主键中添加一个列 - PMID.我怎么写一个ALTER声明来做这个?(我表中已有1000条记录)
当我尝试向表格添加约束时,我遇到了问题.我收到错误:
在表'Employee'上引入FOREIGN KEY约束'FK74988DB24B3C886'可能会导致循环或多个级联路径.指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束.
我的约束是在Code表和employee表之间.该Code表包括Id,Name,FriendlyName,Type和Value.在employee具有许多参考代码,使得可以存在对于每种类型的码的参考字段.
如果删除引用的代码,我需要将字段设置为null.
我有什么想法可以做到这一点?
有没有办法获得以下函数声明?
public bool Foo<T>() where T : interface;
Run Code Online (Sandbox Code Playgroud)
即.其中T是接口类型(类似于where T : class,和struct).
目前我已经满足于:
public bool Foo<T>() where T : IBase;
Run Code Online (Sandbox Code Playgroud)
其中IBase被定义为一个空接口,由我的所有自定义接口继承...不理想,但它应该工作...为什么你不能定义泛型类型必须是一个接口?
对于它的价值,我想要这个,因为Foo它正在做需要接口类型的反射......我可以将它作为普通参数传递并在函数本身中进行必要的检查,但这看起来更加类型安全(而且我假设性能更高一些,因为所有检查都是在编译时完成的).
如何在oracle中删除所有用户表?
我有约束的问题.当我禁用所有它仍然是不可能的.
我有一个叫做的约束users.SYS_C00381400.我如何找到该约束是什么?有没有办法查询所有约束?
在PostgreSQL 8中,是否可以ON DELETE CASCADES在不丢弃后者的情况下添加到下表中的两个外键?
# \d scores
Table "public.scores"
Column | Type | Modifiers
---------+-----------------------+-----------
id | character varying(32) |
gid | integer |
money | integer | not null
quit | boolean |
last_ip | inet |
Foreign-key constraints:
"scores_gid_fkey" FOREIGN KEY (gid) REFERENCES games(gid)
"scores_id_fkey" FOREIGN KEY (id) REFERENCES users(id)
Run Code Online (Sandbox Code Playgroud)
两个引用的表都在下面 - 这里:
# \d games
Table "public.games"
Column | Type | Modifiers
----------+-----------------------------+----------------------------------------------------------
gid | integer | not null default nextval('games_gid_seq'::regclass)
rounds | integer | …Run Code Online (Sandbox Code Playgroud) postgresql cascade constraints cascading-deletes postgresql-8.4
我有一个名为"Person"的表名,后面有列名
P_Id(int),
LastName(varchar),
FirstName (varchar).
Run Code Online (Sandbox Code Playgroud)
我忘了给NOT NULLConstraint P_Id.
现在我尝试使用以下查询将NOT NULLConstraint 添加到名为的现有列中P_Id,
1. ALTER TABLE Person MODIFY (P_Id NOT NULL);
2. ALTER TABLE Person ADD CONSTRAINT NOT NULL NOT NULL (P_Id);
Run Code Online (Sandbox Code Playgroud)
我收到语法错误....
在SQL Server中,我在表上有一个新列:
ALTER TABLE t_tableName
ADD newColumn NOT NULL
Run Code Online (Sandbox Code Playgroud)
这失败是因为我指定了NOT NULL而没有指定默认约束.该表不应具有默认约束.
为了解决这个问题,我可以使用默认约束创建表,然后将其删除.
但是,似乎没有任何方法可以指定默认约束应该作为此语句的一部分命名,因此我摆脱它的唯一方法是使用一个存储过程在sys.default_constraints中查找它表.
对于可能发生很多事情的操作来说,这有点混乱/冗长.有没有人有更好的解决方案呢?
如果我想像这样删除我的数据库中的所有表,它会处理外键约束吗?如果没有,我该如何处理?
GO
IF OBJECT_ID('dbo.[Course]','U') IS NOT NULL
DROP TABLE dbo.[Course]
GO
IF OBJECT_ID('dbo.[Student]','U') IS NOT NULL
DROP TABLE dbo.[Student]
Run Code Online (Sandbox Code Playgroud) sql-server constraints foreign-keys drop-table database-table
constraints ×10
sql-server ×4
sql ×3
foreign-keys ×2
mysql ×2
oracle ×2
alter-table ×1
c# ×1
cascade ×1
drop-table ×1
generics ×1
interface ×1
postgresql ×1
primary-key ×1
sql-drop ×1